HubSpot

Connect HubSpot & track forms, lifecycle stages, and deals

First: get your webhook URL

On the Integrations page, open HubSpot and click Connect. FunnelTrack generates a webhook URL you paste into your HubSpot workflow actions. The URL carries your API key in the ?key= query parameter, so treat it as a secret. Every workflow posts to this same URL.

1. Required plan to use workflows

FunnelTrack's HubSpot integration is driven by the Send a webhook workflow action, which is a paid-tier feature.

The Send a webhook workflow action requires Data Hub Professional or Enterprise(formerly named Operations Hub Professional/Enterprise). Without it, HubSpot workflows can't POST events to FunnelTrack, and none of the tracking below will fire.

Check before you build
In HubSpot, open a workflow and look for Send a webhookin the actions list. If it's missing or greyed out, your account doesn't include Data Hub Professional. Contact your HubSpot admin to add it.
HubSpot Automation menu with Workflows selected
Workflows live under Automation → Workflows.
No Data Hub Professional? Use Zapier
You can still send HubSpot events to FunnelTrack without HubSpot workflows. In Zapier, trigger a Zap on the HubSpot event (new form submission, lifecycle-stage change, or deal-stage change) and add a Webhooks by Zapier → POST action pointed at your FunnelTrack webhook URL. Send the same fields plus the static event value (form_submission, lifecycle_update, or deal_update) shown in each guide.

Before you start: shared setup

Do these two things once. All three tracking flows depend on them.

1

Deploy the FunnelTrack pixel on your site

Install the FunnelTrack pixel on every page of your site, especially any page that hosts a HubSpot form. The pixel writes the visitor's session id (ft_sid) and visitor id (ft_uid) that the form flow captures. Copy your snippet from your FunnelTrack dashboard.

FunnelTrack pixel install snippet
Deploy the FunnelTrack pixel across your site.
2

Create the ft_sid and ft_uid contact properties

In HubSpot, create two Contact properties so workflows can reference them in the webhook body. Under Settings → Properties → Create property, add each with the internal name exactly ft_sid and ft_uid, object type Contact, and a single-line text field type.

Creating the ft_sid contact property in HubSpot
ft_sid contact property.
Creating the ft_uid contact property in HubSpot
ft_uid contact property.

2. Supported event categories

Three categories, split by whether the event has a live web session behind it or happens CRM-side.

FunnelTrack sorts HubSpot events into three categories. One is a webevent (it happens in the visitor's browser and carries a session), and two are offline events (they happen inside HubSpot with no browser attached).

CategoryTypeHow it attributes
Form SubmissionsWebA hidden ft_sidfield ties the submission to the visitor's pixel session, so the conversion carries click IDs, UTMs, geo, and device.
Lifecycle UpdatesOfflineCRM-side stage change. Matches back to the contact by ft_uid or email / phone, then to their most recent session.
Deal UpdatesOfflineCRM-side pipeline change. Same offline matching as lifecycle updates, keyed on the associated contact.

Every workflow sets one static field, event, which tells FunnelTrack which branch to run: form_submission, lifecycle_update, or deal_update.

Why the web vs offline split matters
Web events resolve to the exact session that produced them, which is the most accurate attribution. Offline events have no session of their own, so they inherit the contact's most recent session. Passing ft_uid on offline workflows makes that match far more reliable than email / phone alone.

Choose what to track

Each flow has its own step-by-step guide with screenshots.


To route a specific form, lifecycle stage, or deal stage differently, open a destination page, use Add Custom Event, pick the matching category, and enter the HubSpot hs_form_id, lifecyclestage value, or dealstage id. Still stuck? Contact support.