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 HubSpot routing 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="email" name="email" placeholder="[email protected]" 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 (no card), then $5/mo on Pro (5,000/month) or $49/year on Annual (15,000/month), with no per-integration add-on fees.

How SplitForms works
splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

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
On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

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 network error, timeout, or 5xx from the relay gets one automatic retry, and every delivery lands in the webhook's delivery log with its status, error and attempt count, where you can replay it once the relay is fixed. 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
Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ