Overview
The HubSpot Form Builder allows you to transform any HubSpot form into a customizable multi-step experience. The workflow consists of:- Connecting to HubSpot via OAuth
- Selecting a form from your portal
- Understanding the form schema
- Planning your multi-step layout
- Organizing fields into steps using drag-and-drop
- Previewing and exporting your module
Step 1: Connect to HubSpot
Start the Application
Ensure both the frontend and backend servers are running:Open your browser to
http://localhost:5173Initiate OAuth Connection
Click the “Connect to HubSpot” button in the sidebar.You’ll be redirected to HubSpot’s authorization page.
Authorize the Application
On the HubSpot authorization page:
- Select the portal you want to connect to
- Review the requested permissions (Forms, Content)
- Click “Connect app”
Step 2: Select a Form
Once connected, you can select a form to work with:Open Form Selector
In the sidebar, locate the “Select Form” dropdown.The dropdown will automatically load all forms from your HubSpot portal.
Choose Your Form
Click the dropdown to see all available forms, sorted by most recently updated.Select the form you want to convert into a multi-step experience.
Form schemas are fetched from the HubSpot Forms API endpoint
/marketing/v3/forms/{formId} via your backend server (App.tsx:67-77, useHubSpotForms.ts:53-79).Step 3: Understanding the Form Schema
When a form loads, the application converts it into an internal schema:Schema Structure
Initial Layout
When first loaded, all form fields are automatically arranged:- One-Step Mode: All fields in a single step, one field per row
- Multi-Step Mode: Fields split evenly between two steps
useLayoutStore.ts:43-84.
Field Detection
The sidebar shows “Campos detectados” (Detected Fields) - these are fields from your schema that aren’t currently placed in the canvas. Initially, this will be empty since all fields start in the layout.Step 4: Planning Your Multi-Step Layout
Before diving into the drag-and-drop interface, consider your form’s user experience:Best Practices for Step Organization
Group Related Information
Group Related Information
Start with Easy Questions
Start with Easy Questions
Place simple, non-intimidating fields in the first step:
- Name fields
- Email address
- Basic selections
Progressive Disclosure
Progressive Disclosure
Show the most relevant fields first, then reveal additional options:
- Step 1: Core required fields
- Step 2: Important optional context
- Step 3: Nice-to-have information
Consider Visual Balance
Consider Visual Balance
Distribute fields to create balanced steps:
- Aim for 3-6 fields per step
- Use 2-3 fields per row for compact information
- Give longer fields (like text areas) their own row
Layout Modes
You can switch between layout modes at any time:| Mode | Description | Use Case |
|---|---|---|
| Single Step | All fields in one step | Simple forms with < 5 fields |
| Multi Step | Fields organized across multiple steps | Complex forms, better UX for 6+ fields |
Step 5: Building Your Layout
Now you’re ready to customize the field arrangement. See the Drag and Drop Guide for detailed instructions on:- Dragging fields from the palette
- Reordering fields within steps
- Creating multi-column rows
- Managing steps
- Removing fields
Step 6: Using Layout Controls
Adding Steps
In Multi Step mode, you can add additional steps:- Click the ”+ Add Step” button in the sidebar
- A new empty step appears in the canvas
- Drag fields from other steps or the palette into it
Renaming Steps
Customize step titles to describe their content:- Click on the step title input field
- Type your new title (e.g., “Personal Information”)
- The title updates automatically
Step titles appear in the progress indicator of your published form (LayoutBuilder.tsx:88-95).
Removing Steps
Delete steps you don’t need:- Click the × button in the step header
- All fields from the removed step move to the first remaining step
- You cannot delete the last remaining step
Removing Fields
Remove non-required fields from your layout:- Click the × button on any non-required field
- The field disappears from the canvas
- It automatically appears in the “Campos detectados” palette
- You can drag it back to the canvas later
Example Walkthrough
Let’s build a 3-step contact form from a HubSpot form with these fields:- firstname, lastname, email (required)
- company, jobtitle, phone
- product_interest, message
Start with Default Layout
After selecting the form, all 8 fields are arranged in a single step, one per row.
Switch to Multi-Step Mode
Click the “Multi Step” radio button in Layout Options.Fields automatically split into 2 steps (4 fields each).
Organize Personal Info (Step 1)
Drag
lastname onto firstname (center drop zone) to combine them in one row.Drag email to remain on its own row below.Rename the step to “Personal Information”.Organize Company Info (Step 2)
Move or arrange
company, jobtitle, and phone into this step.Combine company and jobtitle in one row.Put phone on its own row.Rename to “Company Details”.Organize Preferences (Step 3)
Move
product_interest and message to Step 3.Each gets its own row for better visibility.Rename to “Your Interests”.Layout Information Display
The sidebar shows real-time stats about your layout:Next Steps
Drag and Drop
Master the drag-and-drop interface
Exporting Modules
Generate and download your HubSpot module
