Self-Hosting Option for Forms
Self-Hosting Option for Forms is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
SENT From email control
SENT From email control is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Full API Support
Full API Support is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Drop Down populate
Drop Down populate is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Date and Numbers Fields
Date and Numbers Fields is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Native Webflow Integration
Native Webflow Integration is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Zapier/Make Integration
Zapier/Make Integration is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Auto-Renaming Forms, Nodes, and Fields
Auto-Renaming Forms, Nodes, and Fields is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
AI-Generated Forms Based on Niche & Real-World Data
AI-Generated Forms Based on Niche & Real-World Data is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
AI InFlow Assistant for Smart Pathways
AI InFlow Assistant for Smart Pathways is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Short Text Number template
Short Text Number template is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Calendly Integration
Calendly Integration is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
side by side layout options
I'd like the option to have the form fields in a line horizontally rather than vertically stacked. This would be great for using in a header or footer.
Submit FormData to a WebAPI/WebHook on Submit
Submit FormData to a WebAPI/WebHook on Submit is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Schedule Activate Time
Schedule Activate Time is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Multi-User Support & Workspace Management
Collaborate across teams with shared workspaces, role-based access, and clean ownership controls so everyone can build and manage forms together without stepping on each other. This unlocks true team workflows for growing organizations.
Add images to different question types
Add images to different question types is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Formflow Pay — Payments & Checkouts
Formflow Pay — Payments & Checkouts is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Authentication (Google/Microsoft)
Authentication (Google/Microsoft) is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Simple single Checkbox + Text
Simple single Checkbox + Text is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Custom Domain/Subdomain
Custom Domain/Subdomain is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
GDPR Compliance
GDPR Compliance is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
"Other" option in Multiselect
"Other" option in Multiselect is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Consecutive upload nodes previews show previous file
Description: As a user, after creating a form, with consecutive file upload nodes, when the user goes through the form, the file preview remains from the previous upload node. Expected Behavior: As the file upload nodes are different instances, the preview of the files uploaded should not perssist from one node to the other. Bear in mind, it's only a visual bug, as the result tab show the files are uploaded sepparately. Optionals: Jam.dev link 1: Jam.dev link 2:
Calculated Fields
Calculated Fields is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Reformatting text after edits
Having remember and then spend time adjusting the font, color and size, etc. I've already set it the first time, then I change a word or sentence and have to go back to editing. That doesn't happen when I change the text in a the field.
iClosed cooperation for scheduling
If you could integrate iClosed.io this would be the only tool that has the integration. I close this, the calendar for high-ticket closers. It's a good alternative to Calendly.
Better conditional split
better conditional splits ui, easier to understand
Image Annotate Field
Image Annotate Field is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Use of pictures in the form as answers to questions
Use of pictures in the form as answers to questions is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Time of day
Time of day is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Formflow Copilot — AI That Builds Your Forms in Real Time
A fully conversational AI copilot built directly into Formflow. Just describe what you need and watch Copilot generate a complete, production-ready form in seconds — with smart logic, conditional branching, validation rules, and professional styling applied automatically. Not just a form generator. Copilot stays with you throughout the entire lifecycle: • **Build** — Describe your form in plain language and Copilot builds it live as you talk. • **Edit** — Ask it to rearrange fields, change logic, update copy, or restyle anything — all in realtime. • **Troubleshoot** — Copilot diagnoses issues with your form logic and fixes them on the spot. • **Style** — Tell it your brand vibe and it handles the rest. No drag-and-drop required. No settings menus to hunt through. Just a conversation that ends with a form ready to share or embed.
Address autocomplete / autofill / google places api
add the feature for location/address autocomplete using the google places api... it cost a lil so maybe add for scale plan or charge extra billing for feature happy to pay for usage. i believe google charges $2USD per 10,000 requests thats $0.0002/req per address autofill basically type in form 32 Jane St and will autofill exact location has slight uplift in conversion rates vs street, suburb, state, postcode, apt number....
Signature Field
Signature Field is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Page Builder re-design (pre: Style Editor)
New direction: We’re changing the style editor to a more canvas like framer, Figma and amped It should pretty much remain the same, but the canvas will change in the middle Transform to Page Builder & add new simple design mode Roadmap should have style editor (moving to page builder) aiming for a framer, Figma, amped like experience with a canvas system instead of the basic page now. It should eventually become a full page builder, Roadmap the ability to have different forms Full screen page builder funnel Pop up Feedback Embed And more later Please find everything related to the Style Editor in this document.
Field Lookups
Field Lookups is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Content in Spanish (Contenido En español)
Content in Spanish (Contenido En español) is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
ability to publish/unpublish and set a deadline for forms
Dear Formflow team, I’d like to request two basic but essential features for managing forms: Ability to publish/unpublish a form Right now, if I want to temporarily stop collecting responses, I have to delete the form, which is not ideal. It would be much better to have a “Publish / Unpublish” toggle, so that the form link stays in the dashboard but is no longer accessible to users. This would allow us to pause a form, reuse it later, and keep all the responses and settings intact. Automatic unpublishing after a deadline I’d like to be able to set a deadline for a form (for example: “respond before 2026‑04‑15”). Once the deadline is reached, the form should be automatically unpublished, so no more responses can be submitted. This would be extremely useful for events, registrations, and time‑limited surveys. These features are very common in other form‑building tools and would make Formflow much more flexible for real‑world use cases. Thank you for considering this request!
color picker tool
a better design an easier to control
Fix decimals steps to SLIDER from 7% -----> 7.45%, 0.05 steps
For running mortgage/finance ads and anything else with decimal point accuracy is critical... if im asking my client whats your home loan interest rate between 1-10% i need an exact number like 5.75% because their rate exactly shows how much i can finance them for, etc.
GA4, Tagmanger conversions.
It can include GA4 and Tag Manager, which will help with tracking conversions in campaigns where users are required to fill in a form. This is vital to send the right signals to Google. Knowing where users drop off is also important.
Folder or tree‑like organization of forms
I’d like to be able to organize my forms in a hierarchy (folders, sub‑folders, or groups), instead of having all forms in one flat list. This would help a lot when managing many projects, campaigns, or events. These features would make Formflow much more powerful for real‑world use cases. Thanks for considering this! Best regards
AI Assistant
AI Assistant is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Mailchimp Integration
Mailchimp Integration is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Different text formats/styling on different Page Builder fields in the same Page
Different text formats/styling on different Page Builder fields in the same Page is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Dropdown to Multiselect and vice-versa
Dropdown to Multiselect and vice-versa is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Location Fields: Country, State/Province, City
Location Fields: Country, State/Province, City is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Remove the automatic insertion in numbers of a thousand separator
Rotary Districts are all 4 digits. It is inappropriate to insert a separator
Images on page & Allow links in text box component
Images on page & Allow links in text box component is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Multi-Select
Multi-Select is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Renaming Forms
Renaming Forms is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Folders
Folders is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Webhook Array Feature
Webhook Array Feature is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
IP address tracking for constraints
IP address tracking for constraints is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
AI Agent for Results Page
AI Agent for Results Page is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Custom field IDs
Custom field IDs is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Hubspot integration
It connects sales and crm tools with better forms
More tools for QUIZ
More tools for QUIZ is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Style Editor & Page Builder
Style Editor & Page Builder is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Add score 0-10 as a question
Add score 0-10 as a question is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Likert Scale Questions with ability to score
Likert Scale Questions with ability to score is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Auto-Style to Match Your Brand
Auto-Style to Match Your Brand is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Canvas Redesign - Realtime Visual Design
Canvas Redesign - Realtime Visual Design is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
HIPAA Compliance
HIPAA Compliance is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Allow for UTM tracking
Allow for UTM tracking is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Conversational AI Forms with Memory
Conversational AI Forms with Memory is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Google Analytics API Integration
Google Analytics API Integration is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Ability to archive forms
Ability to archive forms is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Auto-erase placeholder on type/click
Auto-erase placeholder on type/click is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Close off function for forms
There should be an ability to set a schedule for the form to be open and to automatically close (with a message) once the schedule has been meet... or at least the ability to manually close off a form with a message. So for example if you are running a entry competition, the form should run for the duration of the competition and automatically close off with a message.
Step back button under the next button and editable
The user can go a step back in the form, the current button is hidden in the top left corner and not customizable besides the color.
Add "Thousands Separator" Setting to Calculator Node Variables
Currently, the only settings option for calculator node variables is the number of decimal places. If a calculation results in a large number, there's no way to format it with a thousands separator comma.
Add Text Highlight Feature to Text Editor Bar in Style Editor
There's currently no ability to easily highlight certain sections of text with a specific colour. It would be immensely helpful if a highlight feature was added to the text editor bar within the style builder.
Add Royalty plan that bypasses all payments
We need a package that we offer to clients as all things free forever (or at least until we keep it in DB). For this to happen, we need to apply some business logic in the platform to bypass stripe for these customers
Move form rendering to its own instance
The goal of the task is to create a separate instance for serving the form for the customers. What we want to achieve with this: Remove unnecessary modules: right now it loads the whole app to be able to render the form load the form in under 1s We need to consider caching for achieve a very fast loading We need to consider preloading next step(s) asynchronously and keeping previous step loaded for fast navigation between pages Some enhancements to be taken into account when working on this task: Automatically set the cursor for the first field on the next page Some explanations here: https://jam.dev/c/1a5b58cd-3130-4d8b-849d-f2fdf6448de4
Form render - Embedding script
Mirror typeform embed
Apply default form styling on new forms
https://app.getformflow.io/ui/forms/2cb44787-92a4-447d-af15-b6c833401ec1. We need to take the default styling of this form and apply it to new forms
Payment packages and customer journey updates
the changes would be: Onboarding stays the same, I assume only the last page, which is the onboarding success, will require some copy changes Then we open up the publish button for 14 days We also open up all canvas features that required pro What UI do we want to show during these 14 days and what will happen once the 14 days pass? So 14 day progress bar bottom left corner with “14 days left” All features 100% Embed, live hosted page, all features on canvas. The goal here is to help them get results as fast as humanly possible. 9:55 Jason K Williamson - Founder Once 14 days passed, I think we let them explore the entire software they just can’t publish. I’d say like “Free trial over, get an active plan” We’d remove trials on plans and just full send letting them grab and pay on the spot 9:55 Jason K Williamson - Founder We could even tooltip or something 9:55 Jason K Williamson - Founder You still have full access to the software, but all of your active forms will be offline until you have an active plan 9:55 Jason K Williamson - Founder So the goal is. 1-14 days is a sprint for us 9:55 Jason K Williamson - Founder We want them getting gigantic ridiculous results 9:57 Jason K Williamson - Founder This is my thought process. Minimal friction > rapid results > provide insane amounts of value before we ask for money
Form rendering Powered By issue
Fix issue with 'powered by' toggle not persisting (this could be more related to canvas) Current rule: {(!isProUser || isShowPoweredBy) && <PoweredBy fullScreen={true} />}
Bug - Form disappearing if you try to update it from share page
When you are on share page and have some updates to push on the form, click Update. An error saying there can only be one starting node appears, although the form is valid Most likely, when being on the share page, there is a problem between RxJS and redux When you come back to canvas, you get an empty canvas, although the form exists This is an example
Results page feedback
Bugs: For new responses, the options don't get mapped in the table as choices (squares) Option mention not mapping, using @ - this may be a canvas issue Filters issues: https://jam.dev/c/8be84ecd-f87d-4d81-ab67-6034c44aa3be Old form data migration issue (duplicate values in field) edge case, filters persist from main view when creating new view with + button tags button opens details pane does not open tag menu Previous list:Y 0. Add Complete filter / column Y 5. Bug: Filtering - If you have multiple filters and you delete the first one, the filtering will fail Y - Add saving of complete true/false on new responses too Y - remove tag from response Y - Nested filter default to OR Y - LOW - remove/rename view Y - Bug - Column state (show/hide) is not saved Y 0. Improve the detail view design
Default Form Style Bugs
In this new default form version: Form background color has been removed (which means it defaults to 100% white). Label margin was changed from 4 to 0. All elements containers now have a gap updated from 0 to 10. Background and border colors have been updated from solid to 10% transparent black. Things are not working: The border width of Input field is not work on live. Also, the border radius on hover or active is not being applied either. Hover/Active border color is not working on live. 2. File Upload Container gap doesn't work 3. Margin in Label keep reset to 4 4. Multiple Choice will be revert to default when refresh the page (see image below) Values has been reset are almost everything: padding, gap, color, border,... 5. The asterisk in the label → There is no option to change this gap; it should be set in the backend. 6. Page background: The background isn't showing on preview or render End of page
Meta integration
Meta Integration Task Specification Figma: Overview We need to implement a Meta (Facebook) integration for our form builder platform. This will allow customers to trigger Meta Pixel events when users navigate between form pages or complete specific actions. Requirements Integration Configuration Create a new "Meta" entry in our Integrations section Allow multiple Meta configurations per account Each configuration should include: Meta Pixel ID (required) Access Token (for server-side API calls) Configuration name (for identification) Event Triggering Support both client-side and server-side event tracking Allow users to select a Meta configuration when setting up an event Provide a dropdown of standard Meta events and a "Custom" option For custom events, allow users to input their own event name and parameters Meta Standard Events Meta Pixel supports the following standard events: PageView ViewContent AddToCart AddToWishlist InitiateCheckout AddPaymentInfo Purchase Lead CompleteRegistration Contact CustomizeProduct Donate FindLocation Schedule StartTrial SubmitApplication Subscribe Technical Implementation Client-Side Implementation For client-side tracking, we'll need to: Initialize the Meta Pixel with the configured Pixel ID Create a utility function to trigger events import { useEffect } from 'react'; declare global { interface Window { fbq: any; } } // Initialize Meta Pixel export const initializeMetaPixel = (pixelId: string): void => { if (typeof window !== 'undefined') { // Add Facebook Pixel code !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); window.fbq('init', pixelId); } }; // Track client-side event export const trackMetaEvent = ( eventName: string, params?: Record<string, any> ): void => { if (typeof window !== 'undefined' && window.fbq) { window.fbq('track', eventName, params); } }; // React hook to initialize Meta Pixel export const useMetaPixel = (pixelId: string): void => { useEffect(() => { if (pixelId) { initializeMetaPixel(pixelId); } }, [pixelId]); }; Server-Side Implementation For server-side tracking, we'll create a tRPC procedure: import { z } from 'zod'; import axios from 'axios'; import { createTRPCRouter, protectedProcedure } from '../trpc'; export const metaEventsRouter = createTRPCRouter({ trackServerEvent: protectedProcedure .input( z.object({ pixelId: z.string(), accessToken: z.string(), eventName: z.string(), eventId: z.string().optional(), userData: z.object({ externalId: z.string().optional(), email: z.string().optional(), phone: z.string().optional(), // Add other user data fields as needed }).optional(), customData: z.record(z.any()).optional(), }) ) .mutation(async ({ input }) => { const { pixelId, accessToken, eventName, eventId, userData, customData } = input; const eventData = { data: [ { event_name: eventName, event_time: Math.floor(Date.now() / 1000), event_id: eventId, user_data: userData, custom_data: customData, action_source: 'website', }, ], }; try { const response = await axios.post( `https://graph.facebook.com/v17.0/${pixelId}/events`, eventData, { params: { access_token: accessToken, }, } ); return { success: true, data: response.data, }; } catch (error) { console.error('Error tracking Meta event:', error); return { success: false, error: error instanceof Error ? error.message : 'Unknown error', }; } }), }); Integration in Form Builder Example of how to use the Meta integration in the form builder: import { useState } from 'react'; import { useMetaPixel, trackMetaEvent } from '@/utils/metaPixel'; import { api } from '@/utils/api'; // Standard Meta events const META_STANDARD_EVENTS = [ 'PageView', 'ViewContent', 'AddToCart', 'Lead', 'CompleteRegistration', // ... other events 'Custom', ]; const IntegrationSelector = ({ formId, pageId, metaConfigurations }) => { const [selectedConfig, setSelectedConfig] = useState(null); const [selectedEvent, setSelectedEvent] = useState('PageView'); const [customEventName, setCustomEventName] = useState(''); // Initialize Meta Pixel if a configuration is selected useMetaPixel(selectedConfig?.pixelId); // tRPC mutation for server-side tracking const trackServerEvent = api.metaEvents.trackServerEvent.useMutation(); const handleTriggerEvent = async (formData) => { if (!selectedConfig) return; const eventName = selectedEvent === 'Custom' ? customEventName : selectedEvent; const eventData = { form_id: formId, page_id: pageId, // Add relevant form data ...formData, }; // Client-side tracking trackMetaEvent(eventName, eventData); // Server-side tracking (if access token is available) if (selectedConfig.accessToken) { await trackServerEvent.mutateAsync({ pixelId: selectedConfig.pixelId, accessToken: selectedConfig.accessToken, eventName, userData: { // Add user data if available externalId: formData.userId, email: formData.email, }, customData: eventData, }); } }; return ( <div> <h3>Meta Integration</h3> <div> <label>Select Configuration:</label> <select value={selectedConfig?.id || ''} onChange={(e) => { const config = metaConfigurations.find(c => c.id === e.target.value); setSelectedConfig(config); }} > <option value="">Select a configuration</option> {metaConfigurations.map(config => ( <option key={config.id} value={config.id}> {config.name} </option> ))} </select> <button>Create New Configuration</button> </div> <div> <label>Select Event:</label> <select value={selectedEvent} onChange={(e) => setSelectedEvent(e.target.value)} > {META_STANDARD_EVENTS.map(event => ( <option key={event} value={event}>{event}</option> ))} </select> {selectedEvent === 'Custom' && ( <input type="text" value={customEventName} onChange={(e) => setCustomEventName(e.target.value)} placeholder="Enter custom event name" /> )} </div> <button onClick={() => handleTriggerEvent({})}> Test Event </button> </div> ); }; export default IntegrationSelector; Database Schema Updates We'll need to add a new table/collection for Meta configurations: // ... existing code ... export const metaConfigurationsTable = pgTable('meta_configurations', { id: serial('id').primaryKey(), accountId: integer('account_id') .notNull() .references(() => accountsTable.id, { onDelete: 'cascade' }), name: varchar('name', { length: 255 }).notNull(), pixelId: varchar('pixel_id', { length: 255 }).notNull(), accessToken: varchar('access_token', { length: 255 }), createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); // ... existing code ... Next Steps Create the Meta configuration management UI Implement the Meta Pixel initialization logic Add Meta event selection to the form builder Implement client-side and server-side event tracking Add validation and error handling Write tests for the new functionality Technical Considerations Meta Pixel ID is required for both client and server-side tracking Access Token is only required for server-side API calls We should implement proper error handling for API failures Consider rate limiting for Meta API calls UI examples: Figma Design:
Add navigation with images on left, right click
Add navigation with images on left, right click is planned for Formflow. We will share more details as implementation progresses.
New Results Page Design Update
Please check out the subtasks for more details...
Error - you can save the menu as terminal node
Error - you can save the menu as terminal node is planned for Formflow. We will share more details as implementation progresses.
Order of left side bar forms is still odd
I created a new form: UntitledForm13 → but it shows randomly on the sidebar somewhere in the middle. Account: radu.g@getformflow.io
Mobile styling issues
https://myformflow.io/jaymakoni-com/saas-onboarding Logo doesn't fit the view correctly Some odd spacing on the mobile Interactive form at the bottom needs top and bottom padding More issues on the video attached https://t9016494931.p.clickup-attachments.com/t9016494931/98071c61-4e14-491d-9185-39061971c21f/ScreenRecording_04-27-2025%2010-08-45_1.MP4?view=open
Results page filter label change
Change "Complete" to "status" when Gab's back It should be Status = Complete/Partial
Add default tracking scripts to form
The initial task will be related to Meta. Flow: in the canvas header, there will be an events icon, we need to display a configuration pop-up where we allow customer to select which Meta account to use for pixel configuration Later: Allow the same for google ads Allow adding header/footer custom scripts And like Marius built. IF no account exists, no dropdown it should say "connect meta"
Clerk - change message on the pop-up
This relates to both framer website and ours: on the localization of Clerk. For the sign up form, can we use: Start Free Trial — No Card Needed Replace "Create your account - to contiue to formflow" With "Create your account Free Trial - No Card Needed" Clerk told me this can be changed in localization
Preview form
The idea of the preview feature is to allow the customer to see the form before being published
Form render mentions issue
I have the following scenario. I use a mention of a previous question into the title of an input from the next page. On the form rendering, it doesn't substitute with the value, but rather with an id type of string: Check page 2. Here is the setup:
Payment/upgrade functionality - move to its own page vs current pop-up experience
When we opened up the platform completely for 14 days trial we ended up having 2 experiences: Either the same pop-up when you click publish, if you're after your 14 days trial (this contains all of the conversions elements we had) Or, when clicking Upgrade from the dashboard, it takes you to settings where you can upgrade. But this is not ideal, because it doesn't contain all the conversion elements. We already discussed this with Gab in his last meeting and I indexed this point already But, your point is right, tracking wise it's a lot harder to track pop-ups, so I'm all good with moving both experiences into a single upgrade page that will be its own page. It will contain all of the conversion elements we had and we can also track it
Test embed script in CMSs, based on priority
Shopify Wordpress Wix Squarespace Webflow Framer Let's note on each one of them the status and solution. Either it works out of the box or we need a plugin or whatever the platform requires
Worker issue - Indexing in Mellisearch
We had a problem where a few responses were not indexed in mellisearch, this caused the server to become busy and it created a loop of messages that inflated the number of responses. We need to: Create a script that goes over non indexed responses from DB and fix them Find a long term solution to have a stable and failsafe solution for the indexing worker
Twilio node type
Twilio node type is planned for Formflow. We will share more details as implementation progresses.
Email and phone to have autosuggest
Email and phone fields need to have autosuggest on with type email or tel, based on the input type.
Intercom integration with app
We need intercom chats to contain user data. In the integration with app., we already have the user logged in, so we need to move the intercom integration into app, rather than through GTM, so we can pass user data upon initialization:
Subscriptions turning inactive based on stripe hook/upgrade function
We have an issue where all subscriptions became inactive. The only place where inactive status is used, is the listener of the stripe webhook. It's likely there is an update function that, without one of the params, does a generic table update that we need to fix
Redirects issue - force add https://
Right now, if you don't have https:// in your redirect url field, it does an internal redirect. It should always do an external one, so we need to force add https:// if not existing
Change phone number component into a prefix + phone one
Right now, the phone number is actually an input, so you can't control the prefix based on the country selector. We need to have a component that separates prefix and phone number, similarly on how we do it on twilio node. But we need it integrated into form rendering and also style editor Maybe shadcn could be an idea, but at least the country picker dropdown should exist
Framer plugin feedback
Task 1: when embedding via framer plugin, take only the form, not the whole page (logo & background) Task 2: solve the cache. The logic needs to be when in editor, no cache. When on the page, but logged into framer as admin, no cache. The problem here is that it doesn't look like we're having a flag that tells us these modes, at least from a quick look at the documentation. Gab will email framer to let us know what data point we can use for this.
Sms node type feedback
Add new option should open the notifications sub-menu (let's see what option we find for this) Z-index of preview should be higher, there are some areas where it's below some other elements
Twilio SMS Consent strategy
In order to be compliant with SMS sending rules, we need to have a few extra measures: When you firstly add an SMS node, we need an area below the node elements that will contain a choice: "By using this node, you agree on sending SMS to the provided phone number" and an "Confirm" button. We need to save the datetime for each user. It will appear one time only. Once confirmed, it will never be shown, but stored in the database. If it's not confirmed, SMS will not be fired When updating/publishing the form, an SMS must be fired only once, to all phone numbers in the SMS nodes with a certain text: "You subscribed to form flow alerts. If this is not intended, reply with STOP" We need to send this only once per phone number used Update, if possible, send a vCard: a "welcome sms" to let them know they are signed up. I think we should also send a contact card and save us as Formflow An SMS contact card, sometimes called a vCard, is a digital "business card" sent via SMS that allows recipients to easily save your brand's contact information to their phone. It's a way to make your SMS messages more personalized and familiar, like those from friends and family.
Templates module - step 1: Build from template
Templates module - step 1: Build from template is planned for Formflow. We will share more details as implementation progresses.
Set up Retool for live DB
Bug reporting steps: We get a report or a problem through slack or any other channel channel The engineer will index the task in click-up, along with a description of the problem and any additional information that were provided (screenshots, urls, user story) Add an estimation of time A branch is created based on the github integration The problem is fixed, it's moved into PR/MR. This allows any shareholder that checks the task on the board to understand what is it about New Feature reporting: Feature description (detailed explanation) Include design (Figma link) Split the feature into sub-tasks for granular explanation Priority (if you know this) Estimation of time (if you know this)
Create a framer plugin for the form embed
Create a framer plugin for the form embed is planned for Formflow. We will share more details as implementation progresses.
Form Templates Design
Magic is waiting... so when press create a form a pop out should ask "start from scratch" "build from template" /*1:59 and then we have to have a screen to CHOOSE the template. I think we should have a search, go by "niche" or "use case" and then the form. @Lee Steffen study jotform and typeform how they do templates Easiest way to create a template is to create a form, we then get the JSON and add it as a static file (e.g. this is what I use for this example) One fast way templates can work is by going some magic with the Start Here Node (the big blue plus), and add there the option of Add new element or template. i think it's best that we give the option like start from scratch, or from template. when they press "create form" - thanks for this, so I can create some forms and you can turn them into templates easily through the from JSON i think 3 options 3:13 Jason K Williamson - Founder Choose a template Start from scratch Ai create the form obviously ai will be hidden until its ready 3:13 Jason K Williamson - Founder but we have to perfect the flow from selecting a template 3:15 Jason K Williamson - Founder so like Choose a template > category, like doctor, etc? > type like hiring > form 3:15 Jason K Williamson - Founder i think? Figma Design: I just want to share some more of my thoughts regarding the template system: I’m aiming to design the templates section to function more like a marketplace, so that in the future, when we move from a style editor to a fully-featured page builder, we’ll likely want to allow users to share and contribute their templates to the system. We could also introduce an affiliate mechanism to attract even more creators. Additionally, really important is that we can use this section to link and showcase the templates page directly on our website for marketing purposes—without requiring users to create an account to view the template library. This way, users can instantly browse a wide range of beautiful templates tailored to their needs and get a clear sense of the software’s capabilities, which can definitely help us attract more customers. Regarding the feature breakdown: I’ve separated “Template” and “Theme” into two distinct features. A Template includes everything—questions, elements, and styling. A "Theme", on the other hand, is a powerful feature that allows us to turn any form into a pre-designed style that can be applied across all elements with a single click. This saves a lot of time when building new forms, especially useful for people or companies that have a brand kit or just need consistency across multiple forms, or they can just browse and easily apply a theme they like to their form without spend too much time on designing. Lee Steffen User Flow 1. Creating a New Form User taps "Create New Form" Option A: Start from Scratch Option B: Use a Template Opens a minimal full-screen modal or side panel with template thumbnails Each template shows: name, brief tag (e.g., “Event RSVP”), and a preview Optional: category or search bar 2. Editing the Form Standard form builder screen (same as usual). If a template was used, show a non-obtrusive tag like: “Using Template: Event Signup” with an option to “Detach from template” or “Edit template settings”. 3. Saving a Form as a Template User clicks ... on the top-right of form editor or in form list Option: Save as Template Prompt: Name your template Optional: choose category/tags Checkbox: “Include only style/layout, not form fields” 4. Reusing or Sharing Templates In “Create New” screen or template manager: Option to “Use” / “Preview” / “Edit” / “Duplicate” / “Share” Sharing Options: For your own use: apply style/layout to another form With privaty/public: generate share link (permissions: view / use only) UI/UX Considerations Area Best Practice Minimalism Default to one-click paths: “Create” → “Choose” (scratch/template) → done. No unnecessary modals. Use overlays or side panels for speed. Consistency Reuse UI patterns from existing form creation—same buttons, spacing, flow. Clarity Clear labels: “Start from Scratch”, “Use a Template”, “Save as Template” — not clever, just obvious. Preview Show template previews visually. Use real form mock data. Avoid text-only lists. Speed Cache popular templates. Add "Recently Used" or "Favorites" section. Scalability Allow users to filter/search templates by type (survey, contact form, feedback, etc.). Template vs Style Let users choose to save a full form as a template (fields + layout), or just save the style/layout as a “Style Preset”. Think like Figma’s Component vs Style. 🔧 Feature List (Core + Pro Options) MVP Template gallery (thumbnails, search, category) "Create from template" or "Create from scratch" Save current form as a template Apply a template to a new form/current form Pro/Optional Features Version history of templates 🗂️ Niche vs. Use Case — What’s the Difference? Term Meaning Example Niche The audience, industry, or business category Education, E-commerce, Healthcare, Agencies Use Case The specific goal or task the form is designed for Contact, Feedback, Registration, Intake 🏷️ 📚 Niches (Industries/Audiences) Category Examples (Tag Ideas) Education School Registration, Course Feedback Healthcare Patient Intake, Consent Forms E-commerce Order Form, Product Feedback Marketing Lead Gen, Newsletter Signup Events RSVP, Event Registration, Check-in HR & Recruitment Job Application, Candidate Screening SaaS & Tech Bug Report, Feature Request, Demo Request Agencies Client Onboarding, Briefing Forms Nonprofits Donation, Volunteer Signup Legal Contract Request, NDA Intake Fitness/Wellness Booking Session, Progress Tracker Finance Quote Request, Loan Application Real Estate Property Inquiry, Appointment Booking Coaching/Consulting Intake, Feedback, Goal Tracker 🧾 ✨ Use Cases (Form Purposes) Category Common Templates Contact Forms Simple Contact, Advanced Contact with Logic Surveys & Feedback Customer Feedback, NPS, Product Survey Lead Generation Ebook Download, Newsletter Opt-In Event Forms RSVP, Ticket Registration, Speaker Signup Bookings & Scheduling Appointment Request, Session Booking Client Onboarding New Client Intake, Discovery Questionnaire Job Applications Basic Application, Role-Specific Screening Quote Requests Service Quote, Pricing Request Order Forms Product Checkout, Multi-Item Order Bug Reporting Software Bug Report, Technical Issue Log Consent & Legal Consent Agreement, Digital Signature Donation Forms Quick Donate, Recurring Donation
Embed needs to always only render the form, as on framer
We need to do that same fix you did for Framer for all embeds. We got a complaint earlier that our embed wasn't working. The user expects only the form to embed not the entire web page. This makes sense to me as well. Please can you add that to your list for ALL embeds the way we do Framer, form only.
Lifetime package - automatic user creation and email send
We're going to go with the solution for listening to stripe webhook for lifetime product and create the user automatically. Email wise, we can fire a PostHog event and you can trigger an email for this usecase. They won't need any magic links, because the user will also get created in clerk, so they will just need to go to app.getformflow.io and login, either with google directly or via email and they receive the login code.
Photo upload not working
Testing form and tried uploading photos. It opened folder but when I click on an image it wouldn't upload it. Nothing major as I am just testing the form. am si eu un scenariu de la un client, care pare ca se replica. Daca ai 2 uploadere pe o singura pagina de form, al doilea nu merge:
Automate flowsplit + 5000 submissions
We need to run this for existing customers too
Rules for reset cache on forms
Reset after form complete Keep cache if saveForm executed at least once Function for clear cache
Multi-select to be default single
Right now, the multi-select is a multiple by default, we should make it single by default, so the user can understand the idea of pathways.
Feature flagging system & appliance to lifetime package
We need to create a feature flagging system that allows setting a feature list per package and also allow individual allocation of feature per user. Right now, we need to apply this to lifetime package. Here is the summary for features limitations on lifetime: - 1000 answers (completed answers) - No flow split (unless upgraded) - No Notification (sms) - Visual analytics (no) - Meta (no) and all integrations - All events (no) - Maybe limit uploads limit Lifetime package will include email notifications. Feature flagging should take into account an UI that allows for path to upgrade: this means the feature CTA should exist in the canvas, but with a symbol of requiring an upgrade. Then clicking it taking the user to the upgrade path
Email (resend) element type
Based on the figma provided by Lee, we need to create a new element type for email. It's going to behave similarly to Twilio. What we need to consider additionally to what's there in the design: We need to research for a good open source editor that will allow us to create the content of the email. (Idea: ) The creation of the email content/editing email content will likely need to happen on a different page, so we don't overload the canvas with side functionality So, in the email node, we will select the message content or add a new one, this will take the user to a page where this new editor will exist. Once finished, it will take the user back to canvas with the email node highlighted and the message content already selected
Webhooks/actions need to wait for last element to be saved before firing
Webhooks/actions need to wait for last element to be saved before firing is planned for Formflow. We will share more details as implementation progresses.
Node title messes up the styling if it's too long
Description: If the title of a node is too long, it will mess up the styling of the node in canvas. Expected Behavior: The node to maintain the styling and the text to behave more like the question name/description, where they move to a new line, instead of remaining on a single line. Optionals:
Quick fix on cursor icon for focusing fields
Quick fix on cursor icon for focusing fields is planned for Formflow. We will share more details as implementation progresses.
Email bounces rules
can we please set a rule if a user HARD bounces, we stop sending emails to that domain and notify the account like a warning : we couldn't deliver your email to x please fix your account De verificat daca Resend face asta automat
Email template to customer - move logo
in the email template we send out, can we please try put the logo in the bottom, smaller above the text? so like a small logo in the footer. the top middle logo is aggressive
Hover over menu in canvas should be click cursor, not hand. Same for email fields
Hover over menu in canvas should be click cursor, not hand. Same for email fields is planned for Formflow. We will share more details as implementation progresses.
Meta integration test
In our meta we have the following setup: we have the pageview by default on all pages. Here, if the form comes with a fbc it should automatically track Then we allow the users to add a custom event that fires sever side We need to test a journey if the event matches the fbc. We need an environment where you access the form via fbc and see how the events look like: I want to see what data layers we're tracking: IP, sha257, fbp, fbc etc
Background issue on canvas with a large form
Screenshot attached
Cloudflare analysis
We already use Cloudflare, but mostly in a default setup. We should analize if Cloudflare can bring us more value in terms of speed optimization for the 3 main modules of the app: Website at: getformflow.io: this runs through Framer, so most likely they already use caching, compression and all these things, so likely that we can't get much here Our app at app.getformflow.io: this is our custom app that contains all the logic. Likely to be able to achieve some optimization with Cloudflare The form rendered to the customer, still part of our app, but I see a higher opportunity for better caching specifically for these pages. Example: https://app.getformflow.io/p/radu-test2/try-formflow
Loading time of form investigation
We need to investigate the loading time of the form from a customer perspective. Testing URL: https://app.getformflow.io/p/radu-test2/try-formflow Gabriel's findings so far: https://docs.google.com/document/d/14een9ULCCdZf4NkcrWH7qw5IzrYc0RqnzeeCo4FGr4g/edit?tab=t.0
Slack integration for customers
Objective: Add Slack to our app where customers can connect their slack for notifications Proposed Solution Overview 1. Slack OAuth Integration: • Use Slack’s OAuth 2.0 flow to allow users to connect their Slack workspace to your application. This will enable you to send messages to their Slack channels. 2. Slack API for Message Posting: • Utilize Slack’s Web API, specifically the chat.postMessage endpoint, to send messages to the user-selected channels whenever the specified events (e.g., form completion) occur. 3. Backend Integration: • Create API routes in your Next.js application to handle the OAuth process, store user access tokens securely, and send requests to Slack’s API. Steps to Implement the Integration 1. Slack App Creation • Go to the Slack API website: . • Click “Create an App” and choose “From scratch.” • Provide your app with a name and select the workspace you want to install it in. • In the OAuth & Permissions section, add the following scopes: • chat:write: To send messages to channels. • channels:read: To list the available channels for the user. • Set up Redirect URLs for your application (e.g., https://your-app.com/api/slack/callback ). Documentation: Slack OAuth & Permissions 2. Slack OAuth Flow • Create a new page in your Next.js app (e.g., /integrations/slack) where users can start the Slack connection process. • On this page, provide a “Connect to Slack” button. When clicked, redirect the user to Slack’s OAuth URL: const slackAuthUrl = `https://slack.com/oauth/v2/authorize?client_id=YOUR_CLIENT_ID&scope=chat:write,channels:read&redirect_uri=${YOUR_REDIRECT_URI}`; window.location.href = slackAuthUrl; • Replace YOUR_CLIENT_ID and YOUR_REDIRECT_URI with the actual client ID from your Slack app and the callback URL of your Next.js app. 3. Handling OAuth Callback • Create an API route in Next.js (e.g., /api/slack/callback) to handle the OAuth redirect. • In this route, capture the code parameter from Slack’s response and exchange it for an access token using Slack’s API: async function getAccessToken(code) { const response = await fetch('https://slack.com/api/oauth.v2.access', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', code, redirect_uri: 'YOUR_REDIRECT_URI', }), }); const data = await response.json(); return data.access_token; } • Store the access_token securely in your database, linked to the authenticated user. Documentation: Slack OAuth V2 Access 4. Integrate with Slack Channels • Once the user has connected their Slack workspace, you can fetch the available channels using the stored access token: async function listChannels(token) { const response = await fetch('https://slack.com/api/conversations.list', { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, }); const data = await response.json(); return data.channels; } • Allow users to select a channel in their dashboard where they want to receive notifications. Documentation: Slack Conversations API 5. Posting Messages to Slack • When an event occurs in your application (e.g., form submission), trigger an API call to send a message to the selected Slack channel: async function postMessageToSlack(token, channel, message) { const response = await fetch('https://slack.com/api/chat.postMessage', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ channel: channel, text: message, }), }); const data = await response.json(); return data; } Ensure this function is called whenever an event that requires a notification occurs in your application. Documentation: Slack chat.postMessage 6. Frontend Integration in Next.js The application needs to implement dynamic triggers that can be setup on the canvas (screenshot attached) The message of the event can be customized in the canvas 7. Security Considerations • Store Access Tokens Securely: Ensure that Slack access tokens are stored securely (e.g., in a database with encryption). • Environment Variables: Use environment variables for storing sensitive information like the Slack client ID, client secret, and redirect URIs. • Token Expiry: Handle token expiry and reauthorization by implementing checks when sending messages to Slack. Task Checklist • Create a Slack app and set up OAuth scopes. - 4 • Implement Slack OAuth flow in Next.js. - 4 • Handle the OAuth callback and securely store the access token. - 8 • List Slack channels and allow users to select where notifications should be sent. - 8 • Implement event triggers (e.g., form submission) to send messages to Slack channels using the stored token. - 6 • Add the integrations management UI in the user’s dashboard. - 6 • Handle token security and reauthorization logic. - 8
New onboarding experience based on Ani's feedback
New onboarding experince: Explanation of changes: Problem to solve: customers were hitting this issues during onboarding, based on screen sessions analysed
Framer plugin enhancements
Check URL that points to the old form render !? Warning for SEO with undefined message i think as well, for a minor fix later can we hide scrollbars? i can see it when my viewport enters and it loads i can see the right side slider were having that issue with the focus/selector cutting off too, so gab can add that like 2px padding maybe, and i know this is an issue with style editor but the text is black on a black bg, i did set to white
[BUG] dashboard metrics (complete rate, drop off rate, average session over 100%)
[BUG] dashboard metrics (complete rate, drop off rate, average session over 100%) is planned for Formflow. We will share more details as implementation progresses.
Canvas validation enhancements
Right now, we have a lot of users hitting 3 main errors in creating a form: Each branch should end in a terminal node - this error is too generic and doesn't point them out which node is orfan. We need to highlight in red the node(s) with errors Ending node can wrongly be set as email/meta/sms. We need to only allow the ending node to be text and/or redirect. For this validation, we need a UI that shows up with a visual showing that email/meta/sms should be place in between the last node and thank you/redirect Maximum call stack error: if you create a circular reference in your form, it lets you save it (it shouldn't), but form rendering throws an error saying maximum call stack reached. We need verify this at publish, throw an error message and (if possible), highlight the node with circular reference.
Dev-ops infrastructure v2
Dev-ops infrastructure v2 is planned for Formflow. We will share more details as implementation progresses.
Add splash screen for mobile
Add splash screen for mobile is planned for Formflow. We will share more details as implementation progresses.
Permanently delete all answers data (for compliance customers)
We'd have to create a button that permanently deletes all answers of a form from both db and caching systems. This is required by customers that store medical data.
Update Framer plugin - scroll and pass FB params
Update Framer plugin - scroll and pass FB params is planned for Formflow. We will share more details as implementation progresses.
Ability to move elements in a node
As a user, when I'm creating my form on the canvas, it's very likely that each of my node (page) will have more than 1 element in it. Right now we don't have the ability to move the order of an element. We need to add this ability with drag & drop feature within the node.
5000 submissions automatic upgrade not working
In the last week, most of the 5000 submission add-on had to be done manually. Not sure if it has to do with the %any% setup in retool, should be a quick fix.
Inspect clerk error for cookie size
When going into clerk, there's this alert message:
Two users using same slug scenario not handled
Description: If a user tries to update the slug, and the slug already exists for another user, it displays an error with "something went wrong". In the back end, a prisma error occurs. New! The other problem is: if you change the slug, or any change in general tab, it saves successfully, in db is correct, but from an UI perspective, if you immediately switch to any other tab (Subscription, Account) and then come back to General, the previous version (before saving) is showed (probably cached). For example: i had a slug set as ducutest. changed it to ducu-test, db was correct, moved to subscription, came back, then it was showing again ducutest. Upon refresh, it showed ducu-test (correct value) Expected Behavior: We should handle the scenario on the back end, so that the prisma error doesn't occur. Optional: Jam.Link 1: Jam.Link 2:
Trial plan is not assigned to new users
Description: When a new user completes the onboarding process, and goes to build the first form, he is prompted to upgrade.After a refresh, the trial plan is applied, and the user can publish the form. Expected Behavior: After completing the onboarding process, and selecting to build the first form, the user should already have the trial plan applied. Optionals:
Long question UI issue
Long question UI issue is planned for Formflow. We will share more details as implementation progresses.
Add a default text to email message content
We have a lot of people that add an email node, they setup the subject, to and everything, but not the message content, and then they say they got an empty email. Let's do a quick fix, if the message content is empty, to have something like:" You need to mention the fields you want to be sent by email"
Kiosk mode - auto refresh
Just enable Kiosk Mode and it would auto refresh form back to start after a few seconds of complete
Start over button in kiosk mode to exist in embed
La kiosk mode, avem butonul de Start over Dar daca ii faci embed, e aceeasi problema ca la back button, nu mai apare ca e in afara form-ului Back button-ul sa apara in form l-am facut eu Dar sa faci si pt start over sa existe in form daca e kiosk mode on in embed
Webhook payload updates
Right now, webhooks send a default payload as an array of items: [{item1 object},{item2 object},...] This is creating a problem with most popular automation tools, like n8n, make.com and zappier The customers have to create custom steps, like increasing the number of records for a webhook, checking logs, etc, so we need to make it easier for customers to use webhooks. First thing to do is to try a different payload, where all results are under a format like this: { 'results': [{item1 object},{item2 object},...]} This way, the automation tools won't see it as multiple records, but as one. Now, in order to not break the previous implementations of webhooks, we need an UI change. When you use a webhook node in canvas, it needs to have a dropwdown of payload. By default it will be 'Standard', but we should have other choices like: 'N8N', 'Make.com', 'Zappier', 'Other Automation tools' All, apart from standard, will send the new format of the payload. The idea to have all the choices is to, in the future, separate the payloads in case we have to go more custom. When we fire the webhook, we need to check the payload type.
We need to add the back button in the form body when embedded (eventually bottom-left)
When somebody embeds the form, the back button is not visible anymore because it is outside the form body. We need to add it, with the same functionality (meaning only appearing on intermediate pages, etc), but on the bottom-left. For non-embedded forms, it remains as is.
Add score mode to canvas
Score mode will allow customers to set up scores for dropdowns and multi-select, where, for each option, they can set a score (weight), which can be used in conditional split and show in results page. We are going to have a general setup mode, a toggle on top of the form that says "Score mode". When ticked to yes, it allows the user to set scores/weights for options. We need to be able to use this score in the conditional split: the score will be calculated until the point of conditional split node. If it's not at the end of the form and it's used somewhere in the middle, the score until that node will be used we need to add a score column, if score mode is activated, in results page too The column can be used in filters and sorting, so it needs to be integrated in mellisearch
Implement Pathways (similar to make.com routers)
https://www.loom.com/share/6153fe4cbbb54770a37f59d9127563d2?sid=75662744-c793-4708-bb35-831aad7a6efe Description: We are introducing a new feature named "Pathways" to enhance the customization and interactivity of FormFlow. This feature will allow users to create complex, multi-conditional routes within forms, enabling a highly personalized experience based on user responses. Objective: Develop the "Pathways" feature, which utilizes filters and settings to define multiple conditional pathways within a form. Each pathway will have the ability to handle complex logical rules (AND/OR conditions) to direct users to tailored destinations based on their choices. Key Features: Multiple Pathways: Users can create several paths within a single form, each with its own unique set of conditions. Conditional Filters: Each pathway can include filters with AND/OR logic to determine the flow based on user inputs. Dynamic Redirects: Based on the pathway conditions, users can be redirected to customized URLs or different parts of the form. Integration: Ensure seamless compatibility with external pages for redirects, possibly using platforms like framer.com for thank you pages. Technical Requirements: Update the backend to handle multiple conditional logic checks. Enhance the frontend to allow users to visually create and edit pathways. Ensure all pathways are stored and executed efficiently to maintain form performance. Provide a clear interface for setting up and managing conditions within the pathways. Use Case: Scenario: A Muay Thai brand is using FormFlow to distribute a nutritional guide with personalized advice. They set up a form with multiple choice questions like "What is your goal?" with options such as Lose weight, Gain weight, Maintain weight, followed by "Why?" with options like Increased Energy and More confidence. Pathway Configuration: Pathway 1: Filters set for "Lose weight" AND "More confidence". Users selecting both are redirected to a specific page that offers them a custom guide and a special offer related to their choices. Resulting Action: On the thank you page, users are greeted with a personalized message and a targeted offer that aligns with their goals of losing weight and gaining confidence, enhancing user engagement and satisfaction. By implementing the Pathways feature, we can significantly increase the personalization and effectiveness of the user journeys within FormFlow, driving higher engagement and more precise targeting in marketing efforts.
Phone number field bug
When trying to add a value to the phone input, it changes to [object object] and you can't edit the field as a customer https://app.getformflow.io/p/test77/try-formflow It replicates on dev too: https://dev.getformflow.io/p/testing-radu/untitled-form35
Move backend APIs into App's trpc
Move backend APIs into App's trpc is planned for Formflow. We will share more details as implementation progresses.
DB migration from Mongo to relational - proof of concept
The problem we're starting with is the choice of a non-relational database for the business model we have. It doesn't fit well, while the current DB design is also poor. This creates problems in response times from DB and large number of alerts from current MongoDB Instance. This task is about creating a proof of concept for a relational database and understand what would be the level of effort to migrate.
Results page - missing answers on required fields
Bug reporting steps: These were "required" fields, and it's not possible they didnt add the fields. Some of them are multiple choice. What could be the issue here? We see 5 different pieces of information missing here in the application What we need to do next: investigate how this scenario happens and what's the root cause It could either be results page data pull (that would be the easiest), or wrong validation or missing some data capture at the time of completing the form We need to make sure we're not losing any data
Results page (pre tags/ratings) fixes
List of issues: PDF and image file for Results page, change the view to 'page fit'. It starts at 410% Middle screen of results page is not scrollable Filter selection dropdown is not scrollable
Backend of formflow doens't have any auth check
As I'm going with Vlad over the app we've also seen some serious security issues with the backend. Maybe @Krishan Saini you can give us some insights here. We sort of have 2 backends. One is the api calls of the front-end to the same nextjs instance (what we have under /website). These calls look like this: https://app.getformflow.io/api/get-forms One is everything under formflow-backend, things like https://formflow-backend-production-e7dc8af51069.herokuapp.com/tenants First of all, the idea of 2 backends is wrong from an architecture perspective, but I assume this has been an old decision, we'll have to fix this at some point. The security issue is that any link from formflow-backend is not protected by any authentication. Have we ever had auth protection on routes? This is a problem, because if you know the urls, you can see private data of any user. Here is an example: https://formflow-backend-production-e7dc8af51069.herokuapp.com/tenants I can see all tenants without being logged into app.getformflow.io Or if I have the url of a form, I can see somebody else's form data completely: https://formflow-backend-clerk-preview-9c0ef86fb88c.herokuapp.com/forms/67124c91f6002e086aa82dd7/versions/67124c92f6002e086aa82dd8
Results page: Tags and Ratings feature
Lee created the full figma for this feature: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=1833-16881&node-type=canvas&t=1D9WnEGcA7qFi2kf-0 We have 2 main modules: Tagging system Rating system The next steps are to break this down into technical subtasks and add estimates to the module. As we add more items to the results page, an important consideration is the performance of the queries. Let's make sure we do a stress test with forms with high amount of answers (hundreds) and confirm the filtering is still quick.
Cancel/manage your billing link
On this page https://dev.getformflow.io/ui/dashboard/settings we need to add a link to Cancel/Manage your plan that would take them to Stripe. Only applies to paying customers. This should be a quick task to make us compliant, there is another larger re-vamp of Settings page to 2.0 that contains a lot of other features, but that's coming later.
Rating/tags filtering options for Results page
With the new feature of ratings and tags being ready, we need to integrate these into the existing filters too.
Ratings/tags sorting options for Results page
For this task, we're not going to have a design available, so we need to go with the styling of the current page and add the following: A new button called Sort in the top right, similar to Filter It will contain Ratings and Tags The dropdown list will separate build in (at top) vs created with a separation line The dropdown styling will be similar to the filter ones, but for sorting
Webhooks mention don't work for drop-down
Webhooks mention don't work for drop-down is planned for Formflow. We will share more details as implementation progresses.
Wrong tabindex
As a customer, when I complete a form and use Tab, the focus doesn't take you input to input, but rather goes label, box, description and then input. Let's see if that's a quick fix or not.
UI/UX - Email node
🧩 Component Name: Email Node A smart node block used in automated workflows to send styled email messages. Message: it's gonna be similar to SMS but needs way more styling/formatting with this one i imagine it's gonna have a button to enlarge / pop out for more detailed editing so it might be like core details From: Subject line: preview text: [edit email] > opens pop up/pop out with email editor (you press edit email, and the editor opens) Preview on right side and i think the header should be editable so we can say like "welcome email" 🔧 Structure & Fields Element Type Notes 🏷️ Header (Editable Title) Text Field Default: “Email” — can be renamed to “Welcome Email”, “Report Email”, etc. 📤 From Text Input Custom sender email or domain shown (e.g., noreply@formflow.com) 📥 To Auto-linked or placeholder Usually auto-filled from user data or prior steps ✉️ Subject Line Text Input Required 🔎 Preview Text Text Input Optional preview snippet (shown in inboxes) 📝 Edit Email Button Opens a modal/pop-out WYSIWYG email editor 👁 Live Preview Right Panel Shows real-time visual of the formatted email ✨ UI/UX Design Guidelines Layout & Structure: Two-Column Layout (Optional Responsive Toggle): Left Side: All inputs (From, To, Subject, Preview, [Edit Email]) Right Side: Live rendered preview (like the one in Resend editor or Mailchimp) Pop-Out Email Editor (Modal or Side Panel): Rich text editor: bold, italic, underline, links, image, buttons Drag/drop blocks or markdown mode (optional for dev power users) Compact mode by default, expandable with Edit Email to open full editor. Interactions: Hovering over “Edit Email” shows tooltip: “Open full email editor” Auto-save drafts while editing Preview updates in real time (on the right) or with a short delay after editing Fallback view if editor is empty: “Start designing your email” 💡 Use Cases Welcome Email: Automated first touchpoint after signup Monthly Report: Send a summary of form or app activity Abandoned Submission Reminder: Personalized nudge for users Team Notification: Internal alert on form submission or update Marketing Blast: Stylized message to a contact list 🧠 Smart Behavior Suggestions Detect if subject/preview is too long and warn Option to clone/copy existing email nodes AI suggestions: "Generate subject line", "Summarize content for preview" Figma Design (WIP)
Webhooks v2 - adding the full payload in case of conditional/pathways + integrate map values in payload
As discussed over chat.
Query params/attribution to be available for customers as data in canvas
The rest of the attribution query params are going to be added to the product in the following way: Query params will be available as mentions, so you can use them in the email trigger Send nodes, like webhook/redirect will include the captured query params We will allow hidden fields for any other third party purpose, including seeing the attribution in results tab We need to show, in the results page, the query params and hidden fields too
Style editor refactoring - State management migration to Redux
Style editor refactoring - State management migration to Redux is planned for Formflow. We will share more details as implementation progresses.
[Website] - Pricing Page Redesign
[Website] - Pricing Page Redesign is planned for Formflow. We will share more details as implementation progresses.
New element type: date
Figma: Custom logic required to be discussed
GDPR pages
For GDPR you need a data processing agreement and a few annexes that I already created here: Now, here is the flow and what we need to do. Let's treat GDPR pages with priority along with the terms and policies you're working now. Here is what I need: On Getformflow.io we need a page called Sub-processors register. Here we're going to have list and conditions for all of our subprocessors. You need to copy the content from Annex III in the doc and put it there. Put a link in the footer under Privacy Policies to this page On Privacy policies page, besides what other content you're going to add with Jason, have a section to include Annex II Technical and Organisational Measures (TOMs) Then I need another page, called Require Data Processing Agreement (DPA) that simply contains a form with email, company name, company address, notes. This form should send a copy to me and Jason and we're going to process the DPA offline
[Framer] Refactoring Formflow project
Target: Improve project loading and performance, making it easier to update and maintain in the future as we scale. To do: Reduce all pages from 4 breakpoints to 3 to minimize lag Remove all unnecessary components Completely remove all elements and items related to the Formflow Prototype Remove all unused/obsolete pages and components (including variants and drafts) Update CMS and third-party components, and apply new Framer feature updates Remove all unused code files and asset files (duplicate colors, fonts, links, etc.) A backup of the project has been created, so nothing will be lost and we can revert at any time.
Enhance scoring with custom categories
There's some likely questions on: Responses: do we show, per answer, only the dominant as a result: like High risk, or we show each category with %. Conditional split: In this case they could go equals 'high risk' and have a branch from it? The mention of the total score will just be the label of the dominant answer at the point it's used, right? I think we can create a dynamic results kinda element later - this can have the option, show 1, 2, 3, 4, 5 or all etc, and it would go High risk 88% Moderate 12% 3. correct, mention of score would be the custom value they created the system will basically tally in a % like high risk so lets say 10 questions, 10 times ive added high risk so potential 100% in conditional split i can just choose "Score Result" High Risk Low Risk No Risk And i can just multiple chocie select it and be like "if user gets high risk" go to > and being able to mention @score-{{custom}} eg: @score-heartrisk = High risk, or whatever the system says it is based on % Customer Consensus on Advanced Quiz Scoring Overall sentiment Very positive. Multiple people said this would be a game changer and exactly what they need. Strong agreement that this will make Formflow much better for lead gen and personality-style quizzes. Key points raised Dominant vs. full breakdown Most users are fine with showing the dominant value first in v1. However, several asked that a full breakdown by percentage or score for each category is available (either now or soon after). Some specifically want the ability to show the top two or even all results (not just one). Handling ties Customers flagged this as an important edge case. Suggestions: Default to the “middle” value (if Balanced and Strong tie → Balanced). Present both tied results (e.g. Defender/Dancer). Allow a deciding question or user choice if top two are tied. Multiple categories / assessments Very well received. People are excited about using this for multi-section assessments (e.g. Heart Risk + Lung Risk + Emotional Health). This unlocks use cases like health assessments, financial capability tests, leadership styles, etc. Advanced personality quiz needs Cathy Simmons described needing a quiz with 12 personality types and 120 questions, where the scores for all types must be displayed (not just one). Her key requirement: user sees full results, can identify top two, and resolve ties. This confirms that some users need a more “assessment report” style output, not just a single outcome. Conditional logic + personalization Multiple people mentioned how valuable it will be to redirect based on results or trigger specific outputs (emails, pages, recommendations). Siu Ling Hui specifically wants ranges mapped to automated emails. Recommendations for v1 scope Core: Custom categories + dominant value output (per category). Important to add soon: Option to show full breakdown of all categories with percentages or scores. Edge cases: Define a simple rule for ties in v1 (e.g., show both). Add more advanced tie-breaking later. Future roadmap: Support multi-top outputs (top 2, top 3), and range-based outputs for automated personalization. Bottom line: Customers are very excited. Dominant value is good for MVP, but full breakdown + top 2 results are critical follow-ups to meet advanced use cases.
New element type: Address
Figma: Custom logic required to be discussed
Form embed - pass google ads validation
Form embed - pass google ads validation is planned for Formflow. We will share more details as implementation progresses.
Better auth - password fallback
Better auth - password fallback is planned for Formflow. We will share more details as implementation progresses.
Debug: webhook does not send score/score cats
To be checked with Mihnea, but customers sent tickets that they don't get scoring/scoring cats via webhook
Mention enhancements
Allow the users to mention an entire page like @pagename or the whole form, like @all-answers. The format of the output should be: Page1 Question1: answer1 Question2: answer2
Filters don't work, they reset immediately after applying
This is a debugging process, because these used to work before. We firstly need to understand what causes the reset, most likely some concurrency on useeffects form the page.
New element type: Signature
Figma: Questions: I'm trying to map out what we want the MVP to do. So normal flow is: you add a new element type in canvas called Signature, you can mark it as required or not Then in the style editor you can probably style the label and description. For the signature block itself, do we want to introduce any properties in style editor? I see in the figma we have background, radius, border and shadows. I'm not sure if we want to let them change the background, because all signatures are usually black on white. In the form itself, you'll be able to draw a signature. Then in responses: we show Signature in the details view and also in export. I'm thinking to have a column in table Signature that has a checkmark for yes or empty, and then in details and export we show the png of the actual signtarue Now, I see some comments where it gets a bit unclear: You say in one comment that it should work for pencils on tablets, that's fine Then you say to have security for legal docs, what does that mean? The other point is the design with 2 signatures. I would recommend keeping this out of the MVP, because it can get tricky, or I don't understand the use-case exactly. Let's say we have a doc where we want 2 people to sign. How would the form work, because we don't have any journeys where you can share your form answers with somebody so somebody else would complete just the signature. Or the 2 signatures to be the use-case of owner signature + customer signature. In this case, the form owner can configure his in canvas somewhere or somewhere in user-settings and to have a toggle in canvas settings for double signature and in customer form to show the owner signature already? So the customer can see it's double signed? Jason's answers: Id leave the BG on this one FOR now, if we need more later we can add it. Users may have a black form and a white block on black woul;d be weird. but later problem re form journeys, i know we don't have this, good to index, being able to share the form journey has been requested a lot but it's not nearly as much as just regular e-sigs OR payments so it can be indexed into an idea, if we need to do later okay. i think we just leave the double sig - its gonna require an almost "shared" version of the form where two people might see a form and be able to answer it but be tied to one response. so you might have signer and signee later, but a future problem Legal wise, I did an analysis on this: Jason's feedback: can we just use a fineprint under signiture box" i agree to xxx" seems like if we wanna be serious we may need the QES eventually, but i do again think thats a later thing IF we get enough traction for it im happy with the MVP solution, i dont think we need a fully advanced version YET
Replace Clerk authentication
Bug reporting steps: We get a report or a problem through slack or any other channel channel The engineer will index the task in click-up, along with a description of the problem and any additional information that were provided (screenshots, urls, user story) Add an estimation of time A branch is created based on the github integration The problem is fixed, it's moved into PR/MR. This allows any shareholder that checks the task on the board to understand what is it about New Feature reporting: Feature description (detailed explanation) Include design (Figma link) Split the feature into sub-tasks for granular explanation Priority (if you know this) Estimation of time (if you know this)
Email Node Update (Color Issues)
Jason: we've had several complaints the "email node" has a red border thinking theres an error, can we just fix this and make the border blue? Here is the new primary color for the Email node — please use this design as the reference.
Test uk number in SMS sending - worker
am putea pune o regula rapida in worker, daca tonumber are +44, e uk, sa avem From nr nou de uk. As vrea sa putem face un test temporar doar pt UK,
Calculations node
The module MVP has been discussed and concluded: We're only going to have expression mode on the calculator, we won't be doing simple mode vs advanced mode When the result is being used, we're just going to print out the result, we won't be having the widget variable edit in MVP We will be able to use as inputs, data from simple text, dropdowns and single selection, where values will be cast to numbers We will enhance this later when we're going to have specific element types for numbers Full specs below -------------- Calculate Node concept: 1. Purpose of the Calculate Node A dedicated node in the Formflow canvas that lets creators perform math operations on data collected from earlier steps in the form. Outputs the result as a variable that can be reused later (e.g., on a Thank You page, in emails/SMS, or in other nodes). 2. Core Inputs Label – Friendly name for the calculation (e.g., Estimate, Repayment). Expression – The math formula that defines the calculation. Can use @variable references pulled from previous nodes (e.g., @how long, @type of car). Supports basic operators (+, -, *, /), exponents, square root, percentages. Outputs – The named result(s) of the calculation for downstream use. Units & Formatting – Predefine units (m, cm, %, $, decimal places). 3. Expression Builder Modes Simple Mode – Point-and-click builder for non-technical users (sum, multiply, divide). Expression Mode – Text-based, where the creator types formulas using variable references. 4. Variable Handling Variables come from earlier form fields (e.g., sliders, dropdowns, multiple choice). Can be fixed (from the original input) or variable (changeable later by the user to recalculate results in real time). Variables are auto-suggested in the expression builder for easy insertion. 5. Preview & Validation Live Preview – Shows example calculation using the most recent input values (18 * 49 = 882). Error Handling – Warns if a variable is missing, value type mismatch, or division by zero. 6. Dynamic Interaction After Submission Clickable Variables on Thank You Page – Users can adjust certain variables after seeing the result to instantly recalculate (e.g., change loan length, rate, or price). Backwards Linking – Option to feed a new input (like multiple choice add-ons) back into a Calculate node to re-run calculations without advancing steps. 7. Example Use Cases Car Rental Inputs: Days (@how long), Daily rate from car type (@type of car), Add-ons (@extras). Formula: @how long * (@type of car + @extras). Output: Total cost. Mortgage Calculator Inputs: Interest rate slider, Loan length, House cost, Down payment. Formula: Complex interest/loan repayment formula. Output: Monthly repayment, total interest paid. 8. Downstream Usage Output variables from the Calculate node can: Feed into Conditional Splits (e.g., “If repayment < $2000…”). Be merged into Thank You pages, Emails, or SMS. Trigger different flows or offers.
New feature - custom domains
sdfsf
Images for options in multi select/drop-down
We need to allow customers to add images to options in multi selects and dropdowns. Here is the proposed design: There might be a change in the settings panel, in canvas, where you select the type We need to take the images through compression for this task Then we need the new styles available for images, type, position, etc
Re-test meta integration
Re-test meta integration is planned for Formflow. We will share more details as implementation progresses.
OTP - SMS for lead to confirm the verification
We're goint to use verify API for the element type of phone, if the setup is OTP verification - on Available to Pro plan and buy credit system. Price 50c per verified lead, we pay twilio 0.05 for verify In form render, at that step, when moving fw, show the verify sms pop-up in the results page, show a verified icon on the record
Text display element type - add text editor - tiptap
We need to allow the customers to edit their text display and style it freely, similar to how Clickup is doing. The recommendation would be to use Tiptap, seems to be the one that's mostly recommended in communities, but feel free to recommend something else: The way I'd see this working is to show the text editor directly in the form. In order to not have styling issues, I'd remove the whole Text Styles from the right hand side and just have a message there: Style your text directly in the editor. So in style editor we would only have Size, while text styles would be directly from editor.
Remove RxJS completely
Bug reporting steps: We get a report or a problem through slack or any other channel channel The engineer will index the task in click-up, along with a description of the problem and any additional information that were provided (screenshots, urls, user story) Add an estimation of time A branch is created based on the github integration The problem is fixed, it's moved into PR/MR. This allows any shareholder that checks the task on the board to understand what is it about New Feature reporting: Feature description (detailed explanation) Include design (Figma link) Split the feature into sub-tasks for granular explanation Priority (if you know this) Estimation of time (if you know this)
Validation rules for all element types
Design above ^ Rules: Short text: Suffix Prefix Min & max characters Show countdown of characters (if max characters is set) Type restrictions (not sure if V1, tbd): Alphabetic only Numeric only Alphanumeric Custom pattern (Regex) Contain: Not Contain: Long text: Min & max characters Show countdown of characters (if max characters is set) Contain: Not Contain: Email: Here I just see Pattern/Regex, where they can enforce a different rule than ours Later the email validation via crediting system Contain: Not Contain: Phone: min & max lenght Countries: which countries to allow, not allow (multi-choice) Multiple choice: If multiple, not single, I can see a nice rule to set minimum/maximum choices. File upload: Max file size Max number of files Type of file (multi-choice) Date field min & max date range V2: within 30 days, before X, Address, Signature - only required/non required
New posthog events for growth - Filip
New posthog events for growth - Filip is planned for Formflow. We will share more details as implementation progresses.
Update color picker
Let's try this one
Checkbox Element [Design]
Checkbox Element Description Let users confirm an option or agreement before submitting. Default Label ☐ I agree to the Privacy Policy Settings Content Checkbox label The text displayed next to the checkbox. Add link Link text URL Open in new tab (recommended for legal documents) Helper text (optional) Explain why this confirmation is required. Behavior Required Users must check this box before submitting. Default state Unchecked (recommended) Checked ⚠️ Pre-checked boxes may not be allowed for consent in some regions. Prevent unchecking Lock the checkbox once checked. Validation Error message This field must be checked to continue. Logic Visibility rules Show when Hide when Common presets GDPR consent Marketing opt-in Terms & conditions Data processing agreement Applies recommended label text and settings automatically. Styling Checkbox style Square / Rounded Checkbox size Small / Medium / Large Accent color Inherits form theme by default. States Unchecked Checked Hover Focus Error Disabled Read-only Accessibility Keyboard navigable Screen reader label support Required and error announcements Submission Data Value: true (Checked) / false (Unchecked) Label snapshot Timestamp (optional) Version (optional) Element Type Field (Boolean input)
AI Copilot V1
AI Copilot V1 is planned for Formflow. We will share more details as implementation progresses.
Layers display in style editor
Layers display in style editor is planned for Formflow. We will share more details as implementation progresses.
New element types: slider, ranking, number, checkbox
Figma with all rules here: On top of that, we should modify the dropdown behaviour for the customer to be able to enable 'Other behviour'. When other is selected, an input to type will be allowed.
Settings Area Redesign
Settings Area Redesign is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Image element type
We need to create a new element type in the canvas called simply Image. It will work very similarly with what we did on the multiple choice images. Canvas flow: New element type → Image. It will look similar to File upload, but no required choice, as it will be simply a static element type. Design wise, we need an icon to open the files gallery, as it does on multiple choice. They can add an image here. That's all, no label or anything, just the image. If we need a label/description, we will keep it there just for reference, but don't show it on the style editor In the style editor, it will look similarly to multiple choice image when clicking on the image. It will have option Image styles I would increase the possible width and height on the slider to go 1200px max We need to remove the position, since we won't have a label We need to remove active style. (optional) I'd let the user change the image in the style editor too, the way it does on the logo. Technically it would open the same file management Then on Label styles I would name it "Container Styles" where we keep Align, Padding, Margin, Gap
Update new Free plan content (Pricing page)
Update new Free plan content (Pricing page) is planned for Formflow. We will share more details as implementation progresses.
Add AI to Email & SMS node [Design]
Add AI to Email & SMS node [Design] is planned for Formflow. We will share more details as implementation progresses.
Numbers element [Design]
[table-embed:1:1 Element | 1:2 Rule Category | 1:3 Rule Name | 1:4 Description / Purpose | 2:1 Number | 2:2 Field rule | 2:3 Minimum value| 2:4 Lowest allowed number| 3:1 | 3:2 | 3:3 Maximum value| 3:4 Highest allowed number| 4:1 | 4:2 | 4:3 Default value| 4:4 Initial value| 5:1 | 5:2 | 5:3 Allow decimals| 5:4 Enable decimal input| 6:1 | 6:2 | 6:3 Decimal precision| 6:4 Limit decimal places| 7:1 | 7:2 | 7:3 Allow negative numbers| 7:4 Enable negative values| 8:1 | 8:2 | 8:3 Step / increment| 8:4 Increase / decrease step| 9:1 | 9:2 | 9:3 Required| 9:4 Must be filled| 10:1 | 10:2 | 10:3 Custom error message| 10:4 Validation feedback| 11:1 | 11:2 Conditional rule | 11:3 Show / Hide| 11:4 Display based on other answers| 12:1 | 12:2 | 12:3 Require| 12:4 Conditionally required| 13:1 | 13:2 | 13:3 Disable| 13:4 Lock field based on condition| 14:1 | 14:2 Branching rule | 14:3 Is equal to| 14:4 Navigate on exact value| 15:1 | 15:2 | 15:3 Is greater / lower than| 15:4 Navigate based on comparison| 16:1 | 16:2 | 16:3 Is between| 16:4 Navigate if in range| 17:1 | 17:2 | 17:3 Is empty / not empty| 17:4 Navigate based on completion| 18:1 | 18:2 | 18:3 Else (fallback)| 18:4 Default navigation path|]
Ranking element [Design]
Ranking element [Design] is planned for Formflow. We will share more details as implementation progresses.
Slider element [Design]
[table-embed:1:1 Element | 1:2 Rule Category | 1:3 Rule Name | 1:4 Description / Purpose | 2:1 Slider | 2:2 Field rule | 2:3 Minimum value| 2:4 Lowest selectable value| 3:1 | 3:2 | 3:3 Maximum value| 3:4 Highest selectable value| 4:1 | 4:2 | 4:3 Default value| 4:4 Initial slider value| 5:1 | 5:2 | 5:3 Step / increment| 5:4 Value increase per step| 6:1 | 6:2 | 6:3 Allow decimals| 6:4 Enable decimal values| 7:1 | 7:2 | 7:3 Required| 7:4 Must be answered before submission| 8:1 | 8:2 | 8:3 Custom error message| 8:4 Message shown on invalid input| 9:1 | 9:2 Conditional rule | 9:3 Show / Hide| 9:4 Control visibility based on conditions| 10:1 | 10:2 | 10:3 Require| 10:4 Make slider required conditionally| 11:1 | 11:2 Branching rule | 11:3 Is equal to| 11:4 Navigate based on exact value| 12:1 | 12:2 | 12:3 Is greater than| 12:4 Navigate if value exceeds threshold| 13:1 | 13:2 | 13:3 Is lower than| 13:4 Navigate if value is below threshold| 14:1 | 14:2 | 14:3 Is between| 14:4 Navigate if value is within range| 15:1 | 15:2 | 15:3 Else (fallback)| 15:4 Default path if no condition matches|]
Formflow landing page [Redesign]
Using new copy and redesigning the homepage to be more modern and mobile-focused, emphasis on improving conversion. A few template for references:
Conditional Split node [Redesign]
Issues: Conditional split node is actually kinda clunky and hard to use Target: More smoother, less clicks etc
Sync more details to Klavyio
Metrics (data saved at profile level): user_registration_date user_registration_method user_last_login company_id and company_name (just in case we want to use the company name in the emails) company_number_published_forms company_plan_name company_plan_paid (true/false) company_ltv Events: user_sign_up ✅ company_started_draft company_published_form company_checkout_started company_checkout_failed company_checkout_succeeded
Guarding subscription plans and UI improvements for upgrades
We need to guard the rules for the subscription plans, based on the packages here: Other changes/improvements: Trial becomes Free package. No expiration, just starter plan with only 100 emails and 100 submissions/mo Current Lifetime will be sunset. We're leaving all customers with current rules, but we're creating Lifetime V2, that's a stripped down version of lifetime. Here is what we currently advertise as Lifetime V2: We need to create a list of what we're restricting (conditional split, etc) When we track the number of submissions, we should count them down, like 199 submissions left, it converts better A submission is counted right now if they reach the end, but we need to change it to consider it if it passed 1st page Results page to take into account limits Related tickets:
Default Form Template [Design Ready]
Updated the default form design (All white) Black & Purple theme:
AI Co-pilot conversational [Design]
Design Example: Requirements: id love a conversational ai builder co-pilot almost on formflow something like this Figma Design (WIP): Formflow Copilot – Design & Build Guide Purpose of this documentation: Hand off cleanly to engineering Avoid over‑promising AI capabilities Beat Typeform / Fillout / Makeform with a Canvas‑native Copilot 1. Product Vision (Anchor This First) Formflow Copilot is a Canvas‑aware co‑designer, not a chatbot. It helps users: Build forms by conversation Edit existing forms intelligently Understand and improve form flow Place steps correctly and re‑map connections automatically Mental model: Framer Copilot, but for form logic + flow 2. Core Principles (Non‑Negotiable) AI proposes, Formflow executes Nothing destructive happens without confirmation Every AI action is explainable Canvas is always the source of truth Undo is always available 3. Copilot Capabilities (What It Should Do) 3.1 Build Create full forms from prompts Add steps (name, email, services, checkout, etc.) Group questions into logical steps Examples: “Create a design services form” “Add a checkout step” 3.2 Edit (Big Differentiator) Rename questions Replace question types Merge or split steps Change order by intent Examples: “Replace this with image choices” “Make this a multi‑step form” 3.3 Flow & Placement Intelligence Copilot should: Suggest where a step belongs Re‑map connections automatically Respect form narrative Rules (MVP‑safe): Name → Email → Qualification → Selection → Payment → Confirmation Checkout always near the end Email before payment 3.4 Explain Explain logic Explain why a step is placed somewhere Explain what happens on submit This builds trust and reduces fear. ✅ Recommended rotating placeholders (cycle every ~3–4s) “Create a lead generation form for a real estate website” “Add an email step after the name question” “Reorder the flow to improve conversion” “Make this form shorter and easier to complete” “Apply a clean SaaS-style layout to this form” “Suggest what step should come next” 🧠 Why these work well They teach capability implicitly (no tooltip needed) They hint that Copilot can: Understand structure Modify existing canvas Make UX decisions, not just generate text They feel closer to Framer Copilot / Aura.build, not ChatGPT ✨ Optional micro-variation (nice touch) You can slightly randomize wording to avoid repetition fatigue: “Add an email step after name” “What should come after this step?” “Optimize this form for higher completion” UX micro-spec (for Figma / dev handoff) Rotate only when input is empty Pause rotation on hover Immediately stop rotation when user starts typing Fade transition (150–200ms), not slide If you want, next I can: Write empty-state Copilot messages Design the input box + send button states Or help you define the exact animation spec for Framer / devs
SMS - we need double opt-in
In order to be compliant with SMS in US and EU, we need double opt-in So, when the user adds a phone number for SMS, we need to have the following flow: Sms 1: please confirm by replying YES that you opt in for messages from Fromflow etc (copy tbd from Jason) Wait for the reply of Yes Save the logs of the reply including timestamp Send SMS 2 (the current one that we have): you opted in etc Only after that we send sms, otherwise we don't. We do this flow only once per phone number
Top Form Dashboard Stats
Top Form Dashboard Stats is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Ambassador Program
Purpose Differentiate from competitors (Typeform/Jotform/Fillout only have affiliate links). Turn users into ambassadors who create authentic UGC (missions, content, referrals). Build a community hub with recognition, rewards, and training. Showcase Formflow itself (dogfooding) for all submissions. Overall Structure Public Pages (Framer, no login) Ambassador Landing Page Hero pitch + CTA (“Apply to Join”) How it works (steps) Rewards & Tiers cards Example Missions preview Ambassador Wall (UGC gallery via CMS) FAQs + Apply CTA Application Page (Formflow form embed) Fields: name, email, socials, why join, consent Submitted into Formflow backend → you review/approve Private Portal (Framer gated with Thenty our own Formflow login system) Login/Sign-up Page Thenty handles authentication Simple branded login screen Dashboard Quick stats: missions completed, submissions, rewards progress “Start a Mission” CTA Missions Page CMS list of missions (title, reward, deadline) “Submit” button → opens the mission’s Formflow submission form Submission History Table/list of submissions per ambassador Status: Pending / Approved / Rejected Pull from Formflow (API or Airtable sync) Resources Page Brand kit, logos, example captions, disclosure rules (#ad) Download links, video embeds Training Hub Learning modules (video, text, downloads) Sections: Getting Started, UGC Basics, Brand Guidelines, Advanced Tips, Compliance Quizzes or mini-missions (via Formflow forms) Unlock badges or tiers after completion Profile & Rewards Ambassador info (name, socials, payout method) Unique referral link (UTM code) Progress tracker: tiers, points, rewards earned Optional: Newsfeed Page Updates, announcements, new missions, top ambassador highlights Optional: Personal Page (public profile) Ambassador’s own portfolio page (approved content, stats, tier badge) Acts as recognition + social proof Data & Content Flow Formflow → All applications, submissions, training quizzes Moderation → You approve/reject inside Formflow dashboard Framer CMS → Only approved content pushed → shown in “Ambassador Wall” & optional personal pages Thenty → Handles login/auth, protects private pages, manages Stripe payouts if needed Automation → Zapier/Make for syncing data (Formflow → Airtable → Framer CMS) Visual Hierarchy (Site Map) Public Landing → Application Private (Portal) Login Dashboard ├ Missions ├ Submission History ├ Resources ├ Training Hub ├ Profile & Rewards ├ (Optional) Newsfeed └ (Optional) Personal Page
Response not marked as complete if flow ends in redirect
Bug reporting steps: We get a report or a problem through slack or any other channel channel The engineer will index the task in click-up, along with a description of the problem and any additional information that were provided (screenshots, urls, user story) Add an estimation of time A branch is created based on the github integration The problem is fixed, it's moved into PR/MR. This allows any shareholder that checks the task on the board to understand what is it about New Feature reporting: Feature description (detailed explanation) Include design (Figma link) Split the feature into sub-tasks for granular explanation Priority (if you know this) Estimation of time (if you know this)
Payment Feature - [Design]
In the concept below, I’ve designed two types of payment flows (essentially using the same single payment system, just with different logic). Adding content... Please find all the details in the Figma file below: Figma Design:
Make a cronjob in worker to delete empty responses older than 7 days
We have a lot of empty responses in DB right now (since we are creating a response for each form view) We need to clean this up In Workers, do another cronjob (see src/consumers/cronjobs/MarkSubscriptionsAsEndedCron.ts as reference) Configure it to run daily Should delete all from FormResponse table where responseRaw and responseFormatted are NULL and createdAt is older than today - 7 days)
Style editor phase 2 improvements
Description: The subtasks each represent a possible improvement for the new style editor.
Edit form button should take the user to canvas every time, not the last state of the island icon
When Edit form is clicked, the state of island menu should be changed to canvas and navigate the user to canvas.
Canvas - Merge form title with page title property
Right now, the form title on the top left is different than Page Title. We need to call them all Form title and: updating the right hand side under settings should update the left hand side selector too Same thing: if you update the text on the left hand side, it should update the page title Right now, on the left hand selector, it only saves if you hit "enter" on keyboard. We should put a debounce or an event on focus out that saves, because customers don't know they need to hit enter
Change edit form actions placement
Hopefully, it won’t take much time to update when we get the chance, as it’s currently causing some issues for users. Here is the Figma design:
Logo render on mobile issue + a few spacing issues
The logo acts like a static image, or relative. it should be sticky, it shouldn't take up space, but with the logo on it pushes the content down the page Without: With: More examples: see the logo sits close to top, bottom is cut off by some random white
Twilio card not looking correctly in messages
Our contact card looks strange when received: Here are 2 examples for twilio where rendering is correct.
Inflow Analytics issues
Analytics off (example Graphic designer form, last 7 days pe contul lui Jason, avem cifre negative la drop-off, sunt destul de multe metric-uri care nu prea au sens in anumite filtre). Si pe alte intervale sunt, dar ne-am uitat pe last 7 days ca sa nu fie prea inainte cand poate am mai avut fixuri despre events
Slack integration error
https://jam.dev/c/af857c8e-6155-4de2-96b9-78f7393b8e01
Dashboard improvements - Dashboard V2 & Analytics
Full figma with details + In terms of analytics, the goal will be solving the capturing of data via TinyBird on the form completion and then showcasing data in dashboard. We're not going into Canvas just yet. https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=1174-3583&node-type=canvas&t=ee03nSMa9vOTtNQy-0 TBD: break this down in subtasks
New uploader area for logo and background images of pages
On the style editor, we're going to add a new functionality for uploading logo and background images/videos Here is the figma for the design: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=4289-24428&node-type=CANVAS&t=Mp8HmA5w6G133LiW-0 Rest of the details in sub-tasks
Refinement for File Uploading and serving assets
Solution proposed: pdf, videos, etc are stored on S3 and served via CloudFront. It makes sense, especially for videos, because we can use lambdas to reduce the size images are saved on cloudflare images and served via CloudFlare CDN. This way we have automatic optimization and best results on serving them.
Refactor results page
Refactor results page is planned for Formflow. We will share more details as implementation progresses.
Results Page v2
Results Page v2 is planned for Formflow. We will share more details as implementation progresses.
AI Insights in Analytics
AI Insights in Analytics is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
AI Agents (In-Flow + Global Assistant)
AI Agents (In-Flow + Global Assistant) is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Intercom chat - fix positioning on style editor page
Intercom chat - fix positioning on style editor page is planned for Formflow. We will share more details as implementation progresses.
Redesign the Checkout/Subscribe page with new direction
Figma design: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7255-55712&t=a8j8ihYYNIHmiWAj-4
Dashboard Page redesign (v2)
Design Link: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7373-27280&t=edMCZmU147uD59I5-4 Preview Link: https://www.figma.com/proto/2maIBobhfPnn2zlEs6yzns/Formflow?page-id=1174%3A3583&node-id=7373-27280&t=edMCZmU147uD59I5-0&scaling=contain&content-scaling=responsive&starting-point-node-id=3582%3A27114
Swap global font to a Google Font
I have swapped the current font [Satoshi] to a google font [Manrope] in the Figma: Satoshi Bold ➝ Manrope Bold (letter spacing: -1%) Satoshi Medium ➝ Manrope Medium Satoshi Regular ➝ Manrope Regular Satoshi Light ➝ Manrope Light Please let me know if this font works. Thanks guys!
Dynamic phone field
Dynamic phone field is on our roadmap. We are collecting feedback and shaping the best implementation for customers.
Upgrade account flow and payment capturing
Right now we don't have a way to upgrade the account and capture the payment We need to take some steps: Remove the free account option from packages selection We need a continuous top bar that shows you need update your payment information We need an upgrade flow when trying to use features from canvas that are part of next plan The other things from here are on Gab's slack list
Pro account features issue
I noticed an issue the other day with my hello@caloriecoach.app account, and as I was talking to a current customer she said she was experiencing the same thing. She said that even though she was a paying customer, it was telling her that she needed to upgrade her account. So If I tried to drag/drop multiple nodes it said "you must have a pro acount" i went into clerk, added user_pro and refreshed, same thing. then on a call with a customer they told me they had the same issue. https://www.loom.com/share/74f61bee1e274b3297a782637ba5454c?sid=dfd8f4d6-dec3-439a-90e6-8e66ea15d562
Error deleting responses from Results page
While on results page, delete a response
Canvas Analytics (inflow analytics)
Right now the analytics mode from the canvas is disabled because it wasn't working correctly. Once the new canvas on Redux works completely, we need to implement analytics back. Considering we fixed the events capture on the form, we need to do a complete update to the canvas analytics system too.
Onboarding v2 (Reduced from 9 screens to 3)
Design: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7733-45396&t=Euw0uqRRwFssFbKN-4
Redesign the Sign-up page on Website
The hero sign-up page has been redesigned. With two separate cards is now merged into one for a better understanding of what users will get when signing up for an account. Live link: https://getformflow.io/sign-up
Design the blog card graphics image as requested by Von
Design the blog card graphics image as requested by Von is planned for Formflow. We will share more details as implementation progresses.
New funnel in Mixpanel
Home page of website > Sign up page > Onboarding > Dashboard Goal: seeing the conversion and drop-offs https://mixpanel.com/s/2SLdzW
Update Formflow homepage website
Waiting for the new Canvas & Style Editor improve the performance. my wife commented saying our new V2 should have like 20 different forms with different designs to showcase potential:
Membership metrics and limitations
Free plan: - 14 day Free Trial - No Credit Card required Starter ($49/month): - 3 Flows - 10.000 Visitors/Month - Canvas (Logic builder): Full advanced drag & drop logic - Style editor: no code required, fully customizable - Results page: Basic dashboard (view & export responses) - Analytics: Basic metrics - Email Validation (pay-per-click): Included - Integrations and sharing: Direct link/embeded, basic webhooks - Support: Standard email support, docs & tutorials Pro($79/month) Everything on starter, plus: - 10 flows - 25.000 visitors/month - Results Page advanced: Filter responses, rate applicants, create custom views (e.g 5-start filter) - Integrations: Advanced (Slack) - Later coming in with marketing automation tools and CRMs - Support: Priority email support, quick-start guides Scale ($99/month) Everything in Pro, plus: Unlimited Flows - 50,000 Visitors/Month - A/B Testing (FlowSplit) - White-Label Branding - Support: White-glove onboarding, dedicated success manager, priority support Questions/notes: Free plan: Within these 14 days free trial the customer will be on the package they chose, so they can be on either starte, pro or scale? Do we want to offer White-labeling only for Scale? This looks to me more like a feature for any paid plan From a copy perspective, I know this is not final, but I would put the Email validation (pay per check, not click) under a section like on-demand. Because now it says included, it takes you to thinking its included. Or maybe we want to include 100 checks/month or something What we need to do for the above: Invest some time in Results page to show/hide features based on plan Fix Basic Analytics (dashboard) Implement the impressions tracking engine Implement the limitations per account Build logic for what happens after 14 days free tier, what notifications we send, what we limit, etc Modules to be build to achieve the full packages vision: - In-Flow Analytics - New integrations with marketing automation tools and CRMs - Sub-accounts
Adding Tidio chat to our application
https://www.tidio.com/panel/login Copy and paste this code snippet just before the </body> tag <script src="//code.tidio.co/keixuty4jtrfrupm0sxicanxj8hpnkwj.js" async></script>
Onboarding & Upgrade to paid experience, new pricing packages
Proposed packages: Pro Pro + Scale Each package will have a monthly and an annual price. Annual one will come with a discount. For a later version we will introduce something called "Pay as you grow" that will eventually replace our free package. Some examples of UI to use as a reference
Actions should not allow anything other than Add Tag
Actions should not allow anything other than Add Tag is planned for Formflow. We will share more details as implementation progresses.
Improve the Dashboard/category on Jason's website
The new dashboard/category pages with video card style is ready: https://jasonkwilliamson.com/klaviyo-mastery What's new? Improved login-logout experience, with a new icon indicator when a user is logged in. Final touches on the module pages. Fixed the search/filter features. Fixed the video page issue where, if no videos are available, the Netflix section is hidden. Added login requirement and "buy course" button (to cover edge cases and prevent users from abusing unprotected pages—view first, buy later). Added a new CMS for categories, enabling real-time search and filtering. Improved UI/UX and micro-interaction experiences overall. Enhanced overall website performance.
Multiple choice - Additional of inputs (Text/Radio/Image)
Canvas Adding Multiple Choice Single Choice (Radio Icon) Multiple Choice (Square Icon) Style Editor In the style editor (properties right sidebar), we now have a new section called "Item Style" (with 3 types of variants) for users to choose from. Type: Image Users can upload images for each option in the right sidebar. An option will appear to customize the image style globally (including image size, radius). Users can customize each image property (in the right sidebar) by selecting the image value (e.g., cropping the image, changing the focus point, and ratio). Type: Icon Type: Icon There are 2 icons as defaults (radio and square) depending on the multiple choice type on the Canvas. Users can’t change this icon but can customize the icon style (color, size). ➝ Please check the Figma design below for more details. Cavas Page: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7178-38302&t=1EQaGCZVOQCQkIGq-4 Example Design: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7151-143479&t=1EQaGCZVOQCQkIGq-4 Style Editor design: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7178-35110&t=1EQaGCZVOQCQkIGq-4 Result Page: https://www.figma.com/design/2maIBobhfPnn2zlEs6yzns/Formflow?node-id=7213-51859&t=OR6c90IRvbIg1Mmt-4
State management upgrade
Attached is the markdown of the problem. The summary is that the canvas, style editor and all other internal customer tools are affected by the way the state management is used. The whole form payload is passed everytime. The goal is to have a short term version where we show a proof of concept and then to provide a plan on how to apply it in all other areas.
Adding new form example for the use case section
Adding new form example for the use case section is planned for Formflow. We will share more details as implementation progresses.
Fix some bugs and improve the detailed design of the website
Fix some bugs and improve the detailed design of the website is planned for Formflow. We will share more details as implementation progresses.
Design Feature Page (CRM)
Design Feature Page (CRM) is planned for Formflow. We will share more details as implementation progresses.
Setting Page design
Setting page design v2 is ready:
Dashboard V2
Implement Dashboard V2 from Figma + showing the right analytics data from the new Tinybird implementation Evaluate the choice for charts between: Shadcn: https://ui.shadcn.com/charts Tinybird: https://www.tinybird.co/docs/publish/charts Tinybird has the advantage of creating your charts and pulling logic in their platform, them embedding the form. But, it gives us less flexibility for charts.
Onboarding error - navigation does not move
https://jam.dev/c/aba4fc0b-4057-415d-b219-a341b4209c8f
Fix try page
app.getformflow.io/try doesn't work anymore
Add a spam protection field on each form rendering
We have an issue with spam, bots are generating a lo of entries in forms. We need to add a quick solution (called honeypot): When we render the first page of the form, besides the normal fields that are getting rendered, we render an extra simple input one with a generic name that looks legit to bots, like "alternative-email-one" We position this with CSS in a way that's not visible anyhow (with a right position of 1000px or something like that) When next is clicked, if this field has any data, it means a bot completed it, we just disable the next action
Issue on form not appearing in sidebar if you don't hit publish
The sidebar needs to refetch data when you get back on the page. https://jam.dev/c/bd29e163-4625-4c9f-a584-f119bf9843ed
Inflow analytics - add calendar filtering
Bug reporting steps: We get a report or a problem through slack or any other channel channel The engineer will index the task in click-up, along with a description of the problem and any additional information that were provided (screenshots, urls, user story) Add an estimation of time A branch is created based on the github integration The problem is fixed, it's moved into PR/MR. This allows any shareholder that checks the task on the board to understand what is it about New Feature reporting: Feature description (detailed explanation) Include design (Figma link) Split the feature into sub-tasks for granular explanation Priority (if you know this) Estimation of time (if you know this)
Fix Validation Logic for “Text” Elements
Description: Modify the validation logic so that “Text” elements are excluded from validation checks, resolving the issue where forms with “Text” elements are considered invalid.
Form validation issue in the scenario of last question being a next button
The very first question is "Name" and it's required, if i select an option it skips right past the name to unique targetId unbelievable. https://formflow-jficj995p-formflow-io.vercel.app/p/e2-agency/untitled-form18 and selecting an option on single choice skips me.. https://www.loom.com/share/04598243d75041748014ea3c4bd2fa31?sid=38bc2331-f483-4714-88bd-9514c080bad7
Add Bulk Delete Option
We need to add checkbox and multi-select checkbox in front of all the rows. User can select a single row or multiple rows or all the rows within that page using the checkbox in header row. If atleast one row is selected, we need to show a Actions dropdown which will have only DELETE option for now. Clicking on it, should open a confirmation box, Upon confirming, the responses will be deleted. This will require API to be created as well.
Add new column in Results page
We need to add a new column on Results page - Received At. User can sort and filter on basis of the Received At value.
Webhook - allow file url
Webhook - allow file url is planned for Formflow. We will share more details as implementation progresses.
Upgrade Plans logic
Reduce onboarding to only key questions (faster start) Remove payment page Allow user full access Force plan on publish Block publish if form has features not available on current plan, offer to upgrade to publish Be compliant for "click-to-cancel" FTC Goal: It’s not a free account, but it’s getting started faster and you cannot publish without a plan,
Change Database from Mongo to Postgres
Replace DB with Postgres, keep interactions through Prisma
Form render - invalidate cache after style editor changes
Steps: Have a standard form, go to share page, open the form rendering url too. You go and do some changes in style editor, you click Update. It updates When you go to share page, the styling is not applied, the assumption is that it takes the page from cache.
App - island navigation issue
Once you navigate to results page, then the navigation is one step behind. Meaning. you go Share → results Page then click on canvas, it takes you on the share page. This looks like having something to do with Results page, because if you go Canvas -> Style editor -> Share -> Canvas or anything else (not doing results page), the navigation is not behind
From rendering fixes
On this form, we get an error when reading the form config: Cannot read properties of undefined (reading 'some')