All posts
Landing pages & CRO

How to Send Framer Form Submissions to HubSpot

How to send a Framer form to HubSpot in 2026: webhooks, HubSpot embeds and automation tools compared, plus how to keep UTMs and the HubSpot cookie intact.

By Mehdi Hassan8 min read

The short answer

To send a Framer form to HubSpot, either place a HubSpot form with Framer's HubSpot component, or point a native Framer form's webhook at an endpoint that submits to HubSpot's form API. Pass the hubspotutk cookie, page URL and UTMs with each submission, or HubSpot can't attribute the lead.

Key takeaways

  • Native Framer forms send to email, Google Sheets and webhooks; HubSpot needs a webhook or an embed.
  • Framer's webhook payload holds only the form's inputs, so UTMs and the HubSpot cookie must be inputs too.
  • Verify Framer's webhook signature and dedupe by submission ID, because Framer retries failed deliveries.
  • HubSpot's automatic collection of non-HubSpot forms isn't dependable on Framer sites.
  • Use a HubSpot embed when marketing must edit fields; use a native form plus webhook when design matters.

Part of Call to Action Guide: How to Write, Place and Design CTAs That Get Clicked

How do you send a Framer form to HubSpot?

You send a Framer form to HubSpot in one of three ways: place a HubSpot-built form with Framer's HubSpot component, send a native Framer form to a webhook that forwards it to HubSpot, or use a third-party connector app from HubSpot's marketplace. The first is the simplest. The second gives you full design control, and it's the one that needs care.

Framer's help center says native forms can send submissions to email, Google Sheets or a custom webhook. HubSpot isn't a direct destination for a native form, so a native form always goes through something in between: an automation tool or a small function you host. Before you wire anything, settle what the form asks and where it sits, which our guide to calls to action and our advice on form fields cover.

Option

Design control

Attribution

Who edits fields

Best for

HubSpot component (embed)

Styled in HubSpot

Built in

Marketing, in HubSpot

Forms that change often

Native form, webhook, your function

Full

Full, if you pass cookie and page

Framer editor plus code

Demo and lead forms

Native form, webhook, Zapier or Make

Full

Weak unless it posts to the form API

Framer editor plus the automation

Routing to several tools

Marketplace connector app

Full

Depends on the app, test it

Framer editor plus the app

Teams without a developer

When should you use a HubSpot form in Framer instead?

Use HubSpot's own form when the marketing team needs to edit fields, options and follow-ups without republishing the Framer site. You build the form in HubSpot, then place it with Framer's HubSpot component using the portal ID and form ID from HubSpot's embed code.

Framer's help center is direct about the trade-off: you place the form in Framer, but its visual and functional customization happens in HubSpot. You get HubSpot's tracking cookie handling, progressive profiling and dependent fields without extra work. You give up pixel control and add a third-party script. Framer's own HubSpot plugin in its marketplace also adds calendars, live chat and one-click tracking. Our HubSpot to Framer migration guide covers placing embeds and the tracking code in detail, so we won't repeat it here.

How do Framer form webhooks work?

A Framer form webhook sends each submission as a JSON POST to an HTTPS URL you choose, keyed by the names of the form's inputs. You add it from the form's Send To setting in the right sidebar. Framer's webhook documentation covers three details most tutorials skip.

  • Signing. You can set a secret on the webhook. Framer then signs each request with an HMAC-SHA256 signature in a Framer-Signature header, which your endpoint should check before trusting the data.
  • Submission ID. Each request carries a Framer-Webhook-Submission-Id header. Store it and ignore repeats.
  • Retries. Your endpoint must return a 2xx status. Framer's documentation says it retries a failed delivery up to five times and doesn't follow redirects.
  • Payload. The documentation describes the form's input values and nothing else: no page URL, cookies or UTMs.

The last point shapes the whole integration. Anything HubSpot needs beyond what the visitor typed has to be put into the form on the page before it's submitted.

How do you set up the Framer HubSpot integration with a webhook?

Build the destination in HubSpot first, then the endpoint, then the Framer form. The endpoint can be a serverless function you host or a catch-hook step in an automation tool, but it should end with a call to HubSpot's form submission API rather than a direct contact write.

  1. Create the HubSpot form

    Add a field for every Framer input, plus fields for UTM source, medium and campaign. Set notifications and follow-ups here.

  2. Install HubSpot tracking

    Load HubSpot's tracking code on every page, through Framer's site settings or the HubSpot plugin, so the cookie exists before anyone submits.

  3. Add the extra inputs

    Give the Framer form inputs for UTMs, page URL and the hubspotutk value, and fill them on the page. Check Framer's current form options for hidden inputs; otherwise a small code override can set them.

  4. Build the endpoint

    Verify the signature, drop repeated submission IDs, map fields, and post to HubSpot's form submission API with hutk, pageUri and pageName in the context.

  5. Connect the webhook

    Point the form's Send To webhook at your endpoint, with a secret set.

  6. Test from a campaign link

    Submit from a tagged URL after visiting a few pages, then check the contact's source, properties and page history in HubSpot.

Keep attribution intact by copying the hubspotutk cookie and the visit's UTM parameters into form inputs, then sending them in the form submission call. HubSpot uses the cookie to join the new contact to the browsing history its tracking code recorded.

HubSpot's cookie documentation says hubspotutk identifies the visitor, is passed with form submissions, is used to deduplicate contacts and expires after six months. It also lists HubSpot's tracking cookies as analytics cookies controlled by the cookie banner. A visitor who declines has no cookie, so the submission still creates a contact, just without page history. Send the cookie value in the API call's context, not as a regular field, and leave it out when it's empty.

UTMs need one more step, because visitors often land on one page and convert on another. Store the parameters on arrival for the session and write them into the form wherever it appears. Test this on the page with the most paid traffic, and watch for drop-off on the form itself with session recordings, as our guide to rage clicks and form abandonment explains.

Hypothetical example: the endpoint for a Framer demo form

For example, suppose a startup's Framer site has a demo form with name, work email, company size, three UTM inputs, a page URL input and a hutk input filled by a small override. The webhook points at a serverless function.

The function reads the raw body, checks the Framer-Signature header against the stored secret and returns early if the submission ID was already processed. It maps the inputs to HubSpot form fields, moves hutk, page URL and page title into the context object, and submits to the HubSpot form. It returns a 2xx only once HubSpot accepts the submission, so Framer's retries cover a temporary HubSpot error. A failed retry also posts an alert to the team's Slack channel.

Does HubSpot capture Framer forms automatically?

Don't count on it. HubSpot's non-HubSpot forms setting collects submissions from HTML forms on pages with the tracking code, but HubSpot's knowledge base excludes forms on single-page apps, forms added after the page loads and forms with JavaScript bound to the submit event.

Framer sites are rendered with React, move between pages without full reloads and submit forms with script, which runs into those exclusions. Even where a submission is picked up, you get no field mapping and hidden fields aren't collected. Treat any capture you see as a bonus, and use a webhook or an embed for every form that matters.

Which Framer forms CRM setup should you choose?

Choose a native Framer form with a webhook and your own endpoint for high-value forms like demo requests, and HubSpot's component for forms marketing edits often. Use automation tools for side effects such as alerts, and only as the main path if they post to HubSpot's form API.

If HubSpot also runs your site today, our guides to leaving HubSpot CMS while keeping the CRM and Framer vs HubSpot CMS help you decide what moves. We set this up on client sites as part of our Framer agency work and our HubSpot integration service, with a test contact checked from every traffic source before launch.

Frequently asked questions

Can a Framer form send to HubSpot and Google Sheets at once?
Framer's help center describes email, Google Sheets and webhooks as destinations, but its webhook article doesn't say whether one form can use several at once, so check the form's Send To options in your project. If it can't, send the webhook to your endpoint and have it write to both HubSpot and the sheet, with HubSpot first.
Is the Framer HubSpot plugin free?
Framer's HubSpot plugin, which its marketplace listing credits to Framer, is a separate thing from the third-party connector apps listed in HubSpot's marketplace. The plugin places HubSpot forms, calendars and live chat and helps with tracking. Connector apps map native Framer forms into HubSpot through their own service. Check each listing for current pricing and what it sends to HubSpot before you choose.
Why does my Framer webhook test work but no HubSpot contact appear?
The webhook reaching your endpoint only proves Framer delivered it. The usual causes after that are a missing or unmapped email field, a field name HubSpot doesn't recognize, the wrong form ID, or an endpoint that returns success before HubSpot accepts the data. Log HubSpot's response for every submission, and return a 2xx only after it succeeds.
Do I need to verify the Framer webhook signature?
For production lead forms, yes. Anyone who finds your endpoint URL can post fake leads to it, and an unsigned endpoint can't tell them apart from real ones. Set a secret of at least 32 characters, as Framer requires, store it only on the server, and reject any request whose Framer-Signature header doesn't match the signature you compute from the raw body.
Will an ad blocker stop Framer leads reaching HubSpot?
It depends on the route. Ad blockers often block HubSpot's scripts, so an embedded HubSpot form may not load at all, and the tracking cookie may be missing. A native Framer form sent by webhook still delivers the lead, because the submission goes through Framer. You lose page history for that visitor, but not the lead itself.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Monthly retainer, $6,000.

Your ongoing design and development team, for products that keep shipping. $6,000, per month, flat fee. Book a free 30-minute call to see if it fits.

Schedule Call