Workflow Test Lab
real accounts / measured in operations / broken on purpose / published with evidence

Advertising disclosure: this page contains no advertising (affiliate) links. If we add any, each will be marked next to the link and this notice will be updated. Where we rely on vendor documentation or have not tested something, the text says so.

HubSpot's free form, or a form plus automation stack: what the tests say

type who should skip ittested 2026-08-23evidence hubspot-native-intake-v1 + client-intake-v1 + client-intake-v2see the run recordstatus approved for publication

Both sides of this comparison were built and tested on real free tier accounts, on 2026-08-16, 2026-08-20, 2026-08-21, 2026-08-22 and 2026-08-23. On one side, HubSpot Free's own form with nothing attached (what it does). On the other, the stack we tested first: a Tally form, Make as the automation layer, HubSpot Free as the CRM, and Brevo for the acknowledgement email (what it does, how it breaks).

We built the stack first and the native form second, which is the honest order to admit: the result below is not the one that sells the most tooling.

The measured difference

HubSpot Free form alone Tally, Make, HubSpot Free, Brevo
Contact created from a submission yes, 1.03 s and 1.18 s measured (2 runs) yes; we did not measure the latency in the stack rounds
All form fields on the record yes, all six (2 runs) yes for the fields the scenario maps (name, email, company); the other three are not written to the contact
Deal created in a pipeline no (0 deals in 2 runs) yes, plus the contact link, which needed one extra API call
Acknowledgement email to the lead not configured by us; see the qualification below yes, delivered to the inbox in every healthy run
Notification to you yes, one email per accepted submission yes, when you add one; our alerts go out on failures
Repeat submission of the same email updates the same contact (2 runs) updates the contact, no second record (2 rounds)
Two submissions a fraction of a second apart one contact, two notifications, counter reads 1 (2 runs) one observed race at 29 ms: one contact, one acknowledgement, one alert, after we added error handlers (observed once)
Monthly volume limit no automation budget to size; we did not test HubSpot's own form volume limits about 166 new leads on Make Free's 1,000 credits (6 credits per new lead, measured)
Cost 0 EUR 0 EUR up to that cap, then Make Core at 9 USD a month (checked 2026-08-20)
Things that can break (observed) silent drop of submissions whose user agent said HeadlessChrome; a near simultaneous duplicate counted as one submission on the record an unhandled error switched the whole scenario off; a broken step left records in place while the acknowledgement never went out; a duplicate race produced a failed run
Setup time (one operator, our build logs) minutes, in the HubSpot UI about an hour, plus the fixes we documented

The fork, in one paragraph

If you need a deal record per intake, or an automatic reply to the lead, the free form alone did not produce either in our tests, and the stack did. If you do not need those two things, the free form matched the stack on everything else we measured (contact creation, all fields, repeat submissions, special characters, validation, operator notification), with no scenario to deactivate and no operations budget to size. That is the whole decision. Our tests do not measure overall reliability on either side; what they show is that the failure modes differ in kind. The stack adds a layer that can stop, and the native form has its own quiet edges, listed in the table.

The qualification we owe you on the acknowledgement email

HubSpot Free does include one simple workflow per form, "Send an email after form submission" (HubSpot documentation captured 2026-08-21, and the option was present in our editor). We did not test it, because the email is a marketing email that reaches only contacts marked as marketing contacts, and because saving it requires an email footer with a physical postal address, which this lab does not publish. So the row above says "not configured by us", not "not possible". If you have a business address you are happy to put in an email footer, that path may close the biggest gap in this comparison, and you should test it before adding an automation tool for that reason alone.

Where each side surprised us

The native form was stricter than we expected. It blocked a malformed address and an empty required field before creating anything, and it silently dropped submissions from a browser whose user agent said "HeadlessChrome" while showing the normal success page. The stack accepted the same automated submissions without filtering. This matters for anyone monitoring their own form with a script, and we wrote up the detail on the native form page.

The stack failed in ways the CRM cannot see. A broken step left a contact and a deal in place while the acknowledgement never went out, and an unhandled error switched the scenario off so later submissions queued up. We tested fixes for both and they worked in the cases we ran, each observed once, but they are work you own forever.

Counting is imperfect on both sides. On the native form, two near simultaneous submissions produced two notifications but a submission counter reading 1, in both runs. On the stack, the one race we observed produced one contact and one alert, with the duplicate's data dropped rather than merged.

What we would tell a solo consultant

Start with the free form if your intake is "capture the person and their answers, and I will reply myself". Add an automation layer when you can name the thing it must do that the form cannot: a deal per intake, an acknowledgement you control, routing, enrichment, or a second system to update. When you do add it, add error handling in the same sitting, because our tests say the failure modes show up on day one, not in month six.


Evidence packs: hubspot-native-intake-v1 (2 runs, 2026-08-22 and 2026-08-23) and client-intake-v1 and v2 (2026-08-16 to 2026-08-23). Public run records: native form, the stack and its error handling. Material statements map to this page's claim ledger; single observations and untested paths are labeled.