HubSpot form integration: send responses into HubSpot as contacts
HubSpot's own form tool is free, sits inside the CRM and needs no mapping at all. If that is what you came for, use it. Upform is for the forms that have to earn the answer: one question per screen, branching logic, your branding. It still writes every submission into HubSpot as a contact, created or updated on the spot, and it costs nothing on the free plan.
The short answer
To push a form into HubSpot with Upform, open the form's Connect panel, authorize HubSpot with your own account, then map each question to a contact property. On submit, Upform looks the person up by email address: a match updates that contact, no match creates a new one. Use HubSpot's native forms for a few fields on a landing page with smart content and attribution behind them. Use Upform when the form itself is the conversion problem. The integration, all 21 question types and unlimited responses are on the free plan.
1
Contact per response
5
Steps to connect
∞
Responses, free plan
$0
Cost of the integration
Being straight with you
Upform forms vs HubSpot's native forms
These are two different jobs. HubSpot's forms are a CRM feature, wired into everything else HubSpot does. Upform is a form product that writes into your CRM. Here is where each one is genuinely ahead.
| Feature | HubSpot's native forms | |
|---|---|---|
| Runtime | One question per screen, keyboard-first, ~1s branded load | A standard field set, embedded or on a landing page |
| Question types | 21, including picture choice, star rating and slider scale | Field types that mirror CRM property types |
| Logic depth | 20 operators, four actions: show, hide, jump, end form | Dependent fields, without jump-to-question branching |
| Design control | Logo, background image, five color slots, Google fonts, radius, progress style | Field styling in the form editor, plus your own page CSS |
| Native CRM fields | Mapped: you match a question to a contact property | Native: the field is the property |
| Smart content and progressive profiling | Not available | Built in, on the paid Marketing Hub tiers |
| Attribution reporting inside HubSpot | Submissions arrive as contacts, not as tracked form events | First-party, tied to HubSpot's own reporting |
| Cost | $0 for every integration on the free plan | Included with HubSpot's free tools |
HubSpot's form features and tiers checked September 2026 on HubSpot's public product and pricing pages; Upform's on our own pricing page. Products change, so verify both before you decide.
How it works
Connect a form to HubSpot in five steps
No API key, no middleware and no per-task automation bill in between. The whole setup happens in the Connect panel of a form you already built.
Connect your HubSpot account
Open the form, go to the Connect panel and choose HubSpot. HubSpot asks you to authorize Upform against your own account over OAuth. There is nothing to paste and nothing to share with the rest of the team.
Pick the properties this form fills
Upform reads the contact properties your account already has. Choose the ones this particular form is responsible for, and leave the rest of the record alone.
Map each question to a property
Every question in the form builder can point at one property. Email to Email, Company Name to Company name, and so on down the list.
Make the email question required
The email address is the match key. Marking that question required means every submission arrives with something to look up, and nothing lands as an orphan record.
Publish and check the timeline
Publish on the public link or as an embed. From the first response onward, one contact is created or updated per submission, with your mapped answers on the record.
Connect · HubSpot
- Per-user OAuth: your account, your permissions
- Disconnect at any time without touching the form
- Stack it with Slack or Google Sheets on the same form
The result
One answer becomes one contact
On the left, what the person filling it in sees. On the right, what your sales team opens a few seconds later.
3 →
What's your work email?
We'll send the proposal here, nowhere else.
An email question, one of 21 types, free on every plan.
HubSpot · Contacts
Example record. Six questions mapped, six properties written. Everything else the form asked stays in Upform.
The mapping
Which question fills which HubSpot property
Upform's question types line up with the standard contact properties, so most of the mapping is obvious before you start. You confirm each pair once.
| Upform question | HubSpot contact property | What lands on the record |
|---|---|---|
| maya@northgate.io, and the key every lookup matches on | ||
| Full Name | First name, Last name | Maya, Okonkwo |
| Phone Number | Phone number | +44 7700 900461, dial code included, because the question collects one |
| Company Name | Company name | Northgate |
| Website | Website URL | northgate.io |
| Address | Street address, city, postal code, country | Whichever sub-fields you switched on in the question |
| Single choice, dropdown, yes/no | Any property you point them at | The label the person picked: "11–50", "Yes" |
| Long text, rating, slider scale | Any property you point them at | The written answer, or the number behind the stars |
Unmapped questions are not lost. They sit in the responses table with search, a date filter and CSV export, and a row opens a side drawer with every answer. Documents collected through file uploads stay in Upform, scoped to the form that collected them.
Create or update
The same person twice does not become two contacts
Every write starts as a lookup. Upform takes the email address from the submission and asks HubSpot whether that contact already exists, then acts on the answer.
- A match updates that contact with the properties this form maps
- No match creates a new contact with those properties filled in
- A repeat visitor enriches the record instead of duplicating it
- Only submitted responses are written, so abandoned forms never reach the CRM
An Upform form is a public link or an embed. It carries no cookie, no session and no HubSpot record ID, so the email address a person types is the only honest way to identify them. The useful side effect: one person filling in three different forms ends up as one record with three sets of properties, not three near-identical rows to merge by hand. Public submissions are protected by invisible reCAPTCHA v3, and the drop-off funnel shows who stopped before the email question.
Use it with
A qualifying form in front of your pipeline
The reason to put Upform in front of HubSpot is what happens before the contact is created. Ask budget, team size and timeline one question at a time, use logic to end the form early for anyone out of scope, and only the people worth a follow-up reach the CRM. The lead generation forms page has the field list to copy.
Destinations stack on one form, so a single submission can create the HubSpot contact, post to Slack and append a spreadsheet row. Start from the quote request form template for questions that are already written, or browse the integrations directory.
Frequently asked questions
Should I use Upform or HubSpot's own form tool?
Use HubSpot's native forms when you need three fields on a landing page and want smart content, progressive profiling or first-party attribution reporting. Use Upform when the form itself has to do work: one question per screen, 21 question types, branching that skips or ends the form, and full control of the logo, colors, font and background. Plenty of teams run both, with HubSpot forms on the site and Upform on the longer qualifying and onboarding forms.
How does Upform decide whether to create or update a contact?
By email address. When a response is submitted, Upform looks the email up in the HubSpot account you connected. If a contact with that address exists, it is updated with the properties this form maps. If none exists, a new contact is created with those properties filled in. Mark the email question required so every submission arrives with something to match on.
Which HubSpot account does Upform connect to?
Yours. The connection is per-user OAuth: you authorize Upform against your own HubSpot account, and it can only write what that account is already allowed to write. There is no shared service account and no API key to paste anywhere. Disconnect it whenever you like and the form keeps collecting responses in Upform, the contacts simply stop arriving.
Do I need a paid Upform plan for the HubSpot integration?
No. Every integration ships on the free plan, which is $0 forever and includes unlimited forms, unlimited responses, all 21 question types and conditional logic. Pro is $12 a month and adds unlimited file storage, removes Upform branding and allows up to five team members. Online checkout is not live yet, so Pro accounts are set up by hand and the team replies the same day.
What happens to answers that are not contact properties?
They stay in Upform. Only the questions you map are written to the contact record, so a ten-question form can send four properties to HubSpot and keep the rest where they belong. Every answer is still in the responses table with search, filters and CSV export, and clicking a row opens a side drawer with the full set. You can also send the same response to Google Sheets or Slack at the same time.
Does an abandoned form create a half-empty contact?
No. The contact is written when the response is submitted, so someone who opens the form and leaves at question four never reaches HubSpot. They are counted in Upform analytics as an incomplete, and the per-question drop-off funnel names the exact question they stopped on. Your CRM stays clean and the diagnosis stays where you can act on it.
Get started
Ask better questions. Fill your CRM with the answers.
Build the form, connect your HubSpot account, and every submission arrives as a contact you can act on.
No credit card. Unlimited forms and responses on the free plan.