Step 1
In HubSpot, go to Settings → Integrations → Private Apps, create a Private App with crm.objects.contacts.write scope, and copy the access token.
Integration · HubSpot
Send form submissions to HubSpot as contacts.

splitforms connects your forms to HubSpot and moves every submission across the moment it's received — no manual export, no copy-paste.
Every submission is emailed to you and saved to a searchable dashboard, so the lead is captured even if HubSpot is unreachable.
Connecting HubSpot to your forms is included in your plan — no add-on charge and no per-message billing from splitforms.
Example: form markup
The form posts to https://splitforms.com/api/submit. The HubSpotrouting is configured in the splitforms dashboard against the form's access key — there's no client-side HubSpot-specific code in your HTML.
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_SPLITFORMS_KEY" />
<input type="hidden" name="_route" value="hubspot" />
<input type="email" name="email" placeholder="you@example.com" required />
<textarea name="message" placeholder="Your message" required></textarea>
<button type="submit">Send to HubSpot</button>
</form>How it works
Here's how to send form submissions to HubSpot in 6 steps — no code required, and most teams finish in a couple of minutes.
In HubSpot, go to Settings → Integrations → Private Apps, create a Private App with crm.objects.contacts.write scope, and copy the access token.
Build a relay endpoint (Cloudflare Worker, Vercel function, or any small HTTP service) that receives the splitforms webhook and POSTs to https://api.hubapi.com/crm/v3/objects/contacts with the contact's email, name, and any other captured fields as properties.
Paste the relay URL into the form's Webhooks tab in splitforms.
Submit a test entry. A new contact should appear in HubSpot within a couple of seconds. Confirm the email matches what was submitted.
Optional: associate the contact with a Deal or Company via additional /associations endpoints inside the relay, so new leads land in the right pipeline.
Optional: enrich the relay with HubSpot list memberships so contacts are auto-added to the 'Website Inbound' or similar list for nurture campaigns.
How teams use it
Use a HubSpot Private App access token and the CRM v3 contacts endpoint to create or update a contact for every submission. splitforms POSTs the submission via webhook through a small relay (or Zapier) that calls HubSpot. Prefer a plainer destination? The same form can also send form submissions to email or forward them to any webhook.

Why splitforms
HubSpot's hosted forms are free but force you to embed a HubSpot script; splitforms keeps the form fully yours. splitforms is free for 500 submissions per month, $5/mo on Pro, or $59 for a 3-year plan (15,000 submissions/month, 36 months of access), with no per-integration add-on fees.

How SplitForms works
Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js.

Trusted by indie teams and agencies shipping forms worldwide
Testimonials
40 quotes on record — from indie hacks to agency migrations.
“I replaced a Lambda + DynamoDB + SES contact form with six lines of HTML. It took eleven minutes, and the dashboard is better than what I was going to build.”
“We migrated 14 client sites off Formspree in a single weekend. The price is a third of what we paid, the API is more honest, and the spam filter actually works.”
“The webhook payload is signed, idempotent, and well-shaped. It reads like code from a competent team, not a CRUD app held together with duct tape.”
“I stopped reaching for Typeform on small marketing sites. splitforms covers 90% of the use case at none of the bloat.”
“I onboarded our whole agency in an afternoon. The MCP integration meant Cursor literally dropped the form straight into our client repos for us.”
“The free plan gave me 500 submissions before I paid a cent, and Pro is five dollars a month. I've spent more on coffee deciding which backend to use.”
“Spam went from forty junk entries a day to zero, with no reCAPTCHA puzzle ruining the form. The honeypot and time-trap just quietly do their job.”
“Point the form action at one endpoint and you're done. No SDK, no client library, no build step. This is how a form backend should feel.”
“Leads land in Slack the second someone submits, and a copy goes to Google Sheets for the sales team. I wired both up in under ten minutes.”
“I run a static Hugo site on a five-dollar VPS. splitforms gave it a real contact form without me standing up a single server.”
Common questions
Today, no — splitforms reaches HubSpot via outbound webhooks plus a small relay (or via Zapier/Make). That's the honest answer; a one-click HubSpot OAuth connector is on the roadmap. The webhook-relay route is reliable in production today and unlocks on Pro ($5/month) and above.
Yes. HubSpot's create endpoint returns 409 if a contact with the same email exists. The relay should catch the 409, then PATCH the existing contact at /crm/v3/objects/contacts/{id}. This avoids duplicate contacts when the same person submits twice.
Yes. Private apps and the contacts API are available on HubSpot's free CRM tier. You don't need a paid HubSpot plan to ingest form submissions — only to use advanced marketing automation features downstream.
HubSpot forms ingest cleanly into HubSpot, but the form itself is hosted by HubSpot, which limits design control and adds a script tag to your site. splitforms keeps the form 100% your HTML, owned by you, and the data flows into HubSpot at the backend. You also keep the option to send the same submission to other destinations (Slack, email).
splitforms always sends the submission to email and saves it in the dashboard regardless of webhook outcome, so even if the relay is down, the lead is captured — a failed delivery is recorded as the webhook's last status (deliveries aren't auto-retried today, so you can re-check and fix the relay). Run the relay on a serverless platform with high availability (Workers, Vercel) and you'll rarely see a missed delivery.
Yes. Set a property on the contact (e.g. 'website_form_submitted = true') and create a HubSpot workflow that triggers when that property updates. This gives you sequence enrolment, internal notifications, and lifecycle-stage updates.
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, and higher submission limits.
Free forever
For side projects and indie devs.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime