---
title: HubSpot integration
slug: hubspot
description: How the Personizely HubSpot integration works: OAuth connection, property mapping, create or update and static list actions, property sync and deletions.
docTags: 
createdAt: 2026-10-17T09:59:18.137Z
---

The HubSpot integration creates and updates HubSpot contacts when visitors submit Personizely widgets, fills the contact properties you map, and adds contacts to static lists. Property changes in HubSpot sync back to the visitor's profile in Personizely, so you can personalize your site with CRM data such as lifecycle stage.

**Available on:** all platforms. HubSpot Marketing, Sales or free CRM.

## Connect HubSpot

1. Go to **Settings → Integrations**, find **HubSpot** and click **Connect**.
2. Log in to HubSpot, choose the account (portal) and approve access. You're sent back to Personizely.
3. The **Mappings** dialog opens with common properties already mapped. Review them and click **Save**.

## What's synced

Only the properties you map are sent. The **Mappings** dialog lists every HubSpot contact property you can write to (read-only properties such as HubSpot's calculated fields are left out). On first connect, these are pre-mapped:

| Personizely field                        | HubSpot property                                                |
| ---------------------------------------- | --------------------------------------------------------------- |
| Email                                    | Email                                                           |
| First name, Last name                    | First name, Last name                                           |
| Phone                                    | Phone number                                                    |
| Company name                             | Company name                                                    |
| Company title                            | Job title                                                       |
| Address, City, Region, Zip code, Country | Street address, City, State/Region, Postal code, Country/Region |
| Bio                                      | Message                                                         |

Map any other property you need, including your own custom HubSpot properties, to a Personizely default or [Custom fields](docId\:km7iOXZLplGl8qZlK582W). Dates are converted to HubSpot's date format. After creating a property in HubSpot, click **Refresh**, then open **Mappings**.

## Automation actions

Add these under **Automation → Action in → HubSpot**. Each needs an email address or a phone number on the visitor's profile.

| Action                    | What it does                                                                                          | Options  |
| ------------------------- | ----------------------------------------------------------------------------------------------------- | -------- |
| **Add or update contact** | Creates the contact, or updates the existing contact with the same email, and links it to the visitor | —        |
| **Add to list**           | Adds the linked contact to a static list                                                              | **List** |
| **Remove from list**      | Removes the linked contact from a static list                                                         | **List** |

Only static lists are offered. Active (dynamic) lists are managed by HubSpot from their filters, so to get a contact into one, map the property its filter uses.

**Add to list** and **Remove from list** work on a contact Personizely has already linked to the visitor, so put **Add or update contact** above them on the same element.

## Identifying HubSpot contacts

When HubSpot is connected, a link carrying the contact's HubSpot record ID in `hs_cid` identifies the visitor, for example with HubSpot's record ID personalization token:

```javascript
https://example.com/pricing?hs_cid={{ contact.hs_object_id }}
```

Personizely loads the contact from HubSpot, links it to the visitor and copies the mapped properties into their profile. See [Identifying visitors](docId\:Q2m71k4qe54obA5WmAvBT).

## Two-way sync and targeting

For contacts linked to a visitor (through an action or an `hs_cid` link), HubSpot reports changes back:

| Change in HubSpot                           | Effect in Personizely                                 |
| ------------------------------------------- | ----------------------------------------------------- |
| A mapped property changes                   | The mapped Personizely field is updated               |
| The contact is deleted, or deleted for GDPR | The visitor's personal data in Personizely is cleared |

This lets you target with CRM data. Map a HubSpot property, such as **Lifecycle stage**, to a [Custom fields](docId\:km7iOXZLplGl8qZlK582W), then use the [Visitor fields filter](docId:8O0nDK0HiHXgMjILAg_OC) filter, for example "Lifecycle stage is customer". HubSpot list membership doesn't sync back, so there's no HubSpot list filter.

## Gotchas

- **Consent isn't set in HubSpot.** Personizely doesn't set HubSpot subscription types or a GDPR legal basis. Map your consent fields to HubSpot properties and use a HubSpot workflow to set subscriptions, if you need them.
- **Marketing contact status** is decided by your HubSpot settings for contacts created through integrations.
- **Only mapped properties travel.** If a field you collect doesn't show up in HubSpot, map it.
- **One HubSpot account per website.** To switch accounts, disconnect and connect again.
- **List actions need a linked contact.** A visitor who has never been sent to HubSpot by an action, or identified with `hs_cid`, can't be added to a list.

## Examples

- **Demo request:** Form with name, email, company and a "Team size" custom field → **Add or update contact** with "Team size" mapped to a HubSpot property, then **Add to list** "Website demo requests". A HubSpot workflow assigns the owner.
- **Customer homepage:** **Lifecycle stage** mapped to a custom field; a personalization targeted to "Lifecycle stage is customer" replaces the trial banner with a link to the help center.
- **Webinar follow-up:** links in HubSpot emails carry `hs_cid`; a callout greets returning registrants by `{visitor.firstName}`.

## Related

- [Email and SMS integrations](docId\:q8l96CeLAKMNxvuIxhl7v)
- [Integrations](docId\:YweYsNdyWfChY1Z9KMneN)
- [Custom fields](docId\:km7iOXZLplGl8qZlK582W)
- [Visitor fields filter](docId:8O0nDK0HiHXgMjILAg_OC)
- [Identifying visitors](docId\:Q2m71k4qe54obA5WmAvBT)
