> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squid-id.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot playbooks

> Ways to put synced Squid ID visitors to work in HubSpot: routing by ICP, re-engaging returning visitors, notifying owners, and triggering sequences from Squid ID+ data.

Once visitors are syncing to HubSpot, the value is in what you do with them. These are concrete recipes built on the exact properties Squid ID writes, so you can copy them into HubSpot workflows directly.

## If you're coming from RB2B

RB2B ships a few workflow examples, but they lean on a page-view activity object and leave routing, lifecycle, and assignment for you to wire up.

<div className="compare">
  <table>
    <thead>
      <tr><th /><th>RB2B</th><th>Squid ID</th></tr>
    </thead>

    <tbody>
      <tr><td>ICP-based routing</td><td>Not built in</td><td><code>squid\_icp</code> on every contact</td></tr>
      <tr><td>Lifecycle / owner on sync</td><td>Workflow-only</td><td>Set by the connector on create, plus workflows</td></tr>
      <tr><td>Premium data to act on</td><td>Business email + page</td><td>Mobile, personal email, address (Squid ID+)</td></tr>
    </tbody>
  </table>
</div>

<p className="why"><strong>Why this matters.</strong> The connector already does the work most teams build workflows for (assignment, lifecycle, list membership). The recipes below are for the layer on top: scoring, routing, and outreach.</p>

## Before you build

These recipes use the [`squid_` properties](/integrations/hubspot-fields). A few notes:

* `squid_icp` carries the ICP the visitor matched, so you can branch on intent without rebuilding scoring in HubSpot.
* `squid_captured_at` updates on every sync, so it is your "last seen" signal. Set the connector's **Send** option to *every identified visit* if you want returning visitors to re-fire workflows.
* `squid_landing_page` is the page they were identified on, useful for intent routing.
* `squid_intent_pages` lists the high-intent pages the visitor actually viewed, so you can branch to a hotter path when they hit pricing, demo, or checkout. The connector can also route on this before the contact is ever created (see [Choose who syncs](/integrations/hubspot#choose-who-syncs)).

The recipes below are shorthand. Every one is a contact-based workflow built the same way as the first recipe: the trigger is a **When filter criteria is met** enrollment on the property shown, and each action is added with the **+** in the workflow editor.

## Recipe: create a task when a visitor is identified

The simplest version: give a rep a task every time Squid ID identifies someone. Squid ID syncs the contact and stamps the properties; HubSpot creates and assigns the task. Workflows are a paid HubSpot feature (Professional or Enterprise tiers).

<Steps>
  <Step title="Create the workflow">
    In HubSpot, click **More → Automation → Workflows** (or **Automation → Workflows** if there is no More menu), then **Create workflow** in the top right. Choose **From scratch**, then the **Contact-based** type.
  </Step>

  <Step title="Set the enrollment trigger">
    Open the trigger box, choose **When filter criteria is met**, and add: contact property `squid_captured_at` **is known**. To get a task on returning visits too (not just the first identification), set the connector's **Send** option to *every identified visit* and turn on **re-enrollment** in the trigger settings.
  </Step>

  <Step title="Add the Create task action">
    Click the **+** in the editor and choose **Create task**. Title it something like "New Squid-identified visitor, follow up", and assign it to a specific rep, a team, or the contact owner.
  </Step>

  <Step title="Review and turn it on">
    Review the workflow and switch it on. That is the whole setup: Squid ID provides the contact and the trigger, HubSpot creates and routes the task.
  </Step>
</Steps>

<Info>Only want tasks for your best-fit visitors? Narrow the trigger to `squid_icp` **is known** (or **is any of** your priority ICPs), covered in the next recipe.</Info>

## Recipe: route ICP matches to a rep

Send your best-fit visitors straight to an owner.

<Steps>
  <Step title="Trigger">
    Contact enrollment: `squid_icp` **is known**. Narrow it with `is any of` your priority ICP names if you only want certain segments.
  </Step>

  <Step title="Actions">
    Use **Edit record** to set **Lifecycle stage** to Sales Qualified Lead, **Rotate record to owner** (or use the owner the connector already set), and **Create task** for them. Rotate record to owner needs Sales or Service Hub Professional or Enterprise.
  </Step>
</Steps>

<Info>You can skip the routing entirely by setting an owner and lifecycle stage right in the connector. Use a workflow when assignment depends on logic HubSpot owns, like territory or round-robin.</Info>

## Recipe: re-engage returning visitors

Catch people who come back after a quiet period.

<Steps>
  <Step title="Set the connector to re-sync">
    In the HubSpot connector, set **Send** to *every identified visit* so a return visit updates the contact.
  </Step>

  <Step title="Trigger">
    `squid_captured_at` **is more than** 7 days after the contact's create date, **with re-enrollment on** `squid_captured_at`.
  </Step>

  <Step title="Actions">
    **Send an internal email notification** (or **Send Slack notification**) to the owner, or enroll them in a "welcome back" marketing email that references their company.
  </Step>
</Steps>

## Recipe: high-intent page routing

Act when someone lands on a page that signals buying intent.

<Steps>
  <Step title="Trigger">
    `squid_landing_page` **contains** `/pricing` (or `/demo`, `/contact`).
  </Step>

  <Step title="Actions">
    Use **Edit record** to set Lifecycle stage to Sales Qualified Lead, then **Send Slack notification** or **Send an internal email notification** to the owner.
  </Step>
</Steps>

<Info>For real-time, on-page intent alerts, route those visitors to [Slack](/routing/route-to-slack) or [Teams](/routing/teams) as well. HubSpot is the system of record; the alert channels are for speed.</Info>

## Recipe: outreach on Squid ID+ data

Turn unlocked contact data into a sequence.

<Steps>
  <Step title="Trigger">
    `squid_personal_email` **is known** (present only when [Squid ID+](/add-ons/squid-id-plus) is unlocked for the record).
  </Step>

  <Step title="Actions">
    **Enroll in a sequence** that uses the personal email and mobile number, so outreach is not limited to the work inbox. Enroll in a sequence needs Sales or Service Hub Enterprise and a connected inbox.
  </Step>
</Steps>

## Recipe: notify the contact owner

Tell the owner the moment one of their accounts is back on the site.

<Steps>
  <Step title="Trigger">
    `Contact owner` **is known** AND `squid_captured_at` **is less than** 1 day ago (re-enroll on `squid_captured_at`).
  </Step>

  <Step title="Action">
    **Send Slack notification** to the contact owner, or **Send an internal email notification** with owner personalization tokens.
  </Step>
</Steps>

## Recipe: build a segment of your best visitors

A worked example you can follow end to end. HubSpot renamed lists to **segments** (some portals still say "lists"), and there are two kinds:

* A **static** segment is a fixed bucket. Squid ID adds each identified contact to it as they sync. This is the segment you pick in the connector.
* An **active** segment rebuilds itself from filter criteria. You can't add to it directly (nothing can, including Squid ID), but it's where you filter the incoming contacts down to the ones worth acting on.

The pattern: point the connector at a static segment so every visitor lands in one place, then layer an active segment on top that filters on the `squid_` properties.

<Steps>
  <Step title="Create the static segment in HubSpot">
    Go to **CRM → Segments** (click **More** in the nav if you don't see it), click **Create segment**, choose the **Contacts** object, then on the final step pick **Static**. Name it something like `Squid ID – Website visitors` and save.
  </Step>

  <Step title="Point the connector at it">
    In Squid ID, open **Settings → Integrations → HubSpot**, and under **Add to segment** pick the segment you just created. If it isn't there yet, click the reload icon next to the dropdown. From now on every identified visitor is added to that segment automatically.
  </Step>

  <Step title="Create an active segment on top">
    Back in HubSpot, **Create segment** again, choose **Contacts**, and this time pick **Active**. Name it for the slice you want, for example `Hot ICP – last 7 days`.
  </Step>

  <Step title="Filter on the Squid ID fields">
    Add filter criteria using the properties Squid ID writes on every contact:

    * **Member of segment** `Squid ID – Website visitors` (scopes it to Squid-identified people)
    * AND `squid_icp` **is any of** your priority ICP names
    * AND `squid_intent_pages` **is known**
    * AND `squid_captured_at` **is after** `7 days ago`

    Save it. The segment now stays current on its own: anyone Squid ID identifies who matches drops in, and drops out when they age past the window.
  </Step>
</Steps>

<Info>Every field you can filter on here is listed, with its type and when it's set, in [What HubSpot receives](/integrations/hubspot-fields). The common ones for segmenting are `squid_icp`, `squid_intent_pages`, `squid_landing_page`, and `squid_captured_at`, plus the standard `email`, `jobtitle`, and `company`. When **Create & associate companies** is on you can also filter on the linked Company's name, domain, and industry.</Info>

## Reports

* Report on `squid_captured_at` over time to see identified-visitor volume, and on `squid_icp` to see how much of it is on-profile.
* Point any report or dashboard at the active segment above so it tracks just your best-fit, in-market visitors.

## Related

* [Sync visitors to HubSpot](/integrations/hubspot)
* [What HubSpot receives](/integrations/hubspot-fields)
* [HubSpot troubleshooting](/integrations/hubspot-troubleshooting)
* [ICP filtering](/finding-visitors/icp-filtering)
