Campaigns

Intent-driven campaigns

An Intent-driven campaign is anchored to a live HubSpot list rather than a fixed upload. Your RevOps team maintains the list, accounts showing intent, de-anonymised website visitors, product signals, or a segment they curate, and the list stays current on its own. A rep opens the account browser, picks the accounts worth working that day, and cherry-picks exactly which people at each account to pull in. Kai leads its research with the intent signal, then writes and queues sequences as usual.

When to use Intent-driven

Use Intent-driven when the question "who should I reach out to today" is answered by your CRM rather than a list you built by hand. The classic case is an intent motion: a tool like RB2B de-anonymises website visitors, or a scoring model flags accounts showing buying signals, and those accounts land on a HubSpot list. Instead of exporting that list to a CSV every morning, you point a campaign at the list once and work it directly, always seeing the current state.

It is the right type when the pool of accounts changes continuously and someone in your CRM owns keeping it accurate. If your list is fixed and you just want to run it once, use Targeted List instead. If you want Kai to find brand-new contacts against an ICP with no CRM list at all, use Always-on.

How it works

The motion has a natural daily rhythm:

1
RevOps keeps the list current

Your CRM team maintains a HubSpot list of accounts with intent. As signals come and go, the list updates. Kai always reads the live list, so you never work a stale export.

2
You pick an account to work

Open the campaign and use the account browser to see the accounts on the list, each with its intent signals and how many contacts it holds. Pick the ones worth your time today.

3
Cherry-pick the people

Expand an account and tick the specific people you want to reach. You are not forced to take everyone; you choose the personas that fit your motion, and Kai pulls only those in.

4
Kai researches, writes, and queues

The people you pulled enter the normal pending-research flow. Kai researches each one, leading with the intent signal, writes a personalised sequence, and queues it for your review in Approvals.

Creating an Intent-driven campaign

On the campaign creation form, there is no contact-source card, because the HubSpot list is the source. Instead you configure the list itself.

1
Choose the list type

Use the toggle to say whether your HubSpot list is a Contacts list or a Companies list. This matters: HubSpot stores the two differently, and Kai reads them through different paths. If your list is a list of companies (common for account-based intent), pick Companies.

2
Point Kai at the list

Paste the HubSpot list ID or the list's HubSpot URL. Click Preview to confirm Kai can read the list and see how many records it contains. If the preview comes back empty, check the list type toggle first, a companies list read as contacts returns nothing.

3
Name the intent properties

Tell Kai which HubSpot properties carry the intent signal, the visit data, the trigger event, the segment or tier field. Kai treats those values as signals and leads its research with them rather than treating them as ordinary contact fields. On a companies list you can also name company-level properties, which Kai applies to every person at that account.

Contacts list or Companies list? A Contacts list is a list of individual people. A Companies list is a list of accounts; when you pull from one, Kai expands each company to the people associated with it in HubSpot, and any company-level intent value is applied to everyone at that account. Company properties are supported on Companies lists.

The account browser

Once the campaign exists, open it and Kai shows the account browser built from the live list. Accounts appear as rows you can search and expand. Each row shows the account's intent signals and its contact count. Expand a row to see the people, tick the ones you want, and click Pull selected into campaign. People already in the campaign are shown but not selectable, so you never pull a duplicate.

Account browser
Northstar Media Pricing page x3 6 contacts
Harbor Analytics Demo request 4 contacts
Vela Group Return visitor 9 contacts
The account browser. Each account shows its intent signals and contact count. Expand a row to cherry-pick people, then pull them into the campaign.

Refreshing after enrichment

Your list changes over time, and your CRM team may enrich an account after you have already looked at it, adding colleagues through a tool like Clay, for example. Click Refresh from HubSpot to re-read the list and pick up new accounts and newly added contacts. Refreshing does not touch anyone already pulled into the campaign; it only updates what the browser shows.

Enrichment has to finish first. If an account shows zero contacts right after your CRM team added it, HubSpot enrichment may not have completed yet. Give it a moment and click Refresh from HubSpot again, the contacts appear once HubSpot has finished populating the account.

How the intent signal shapes outreach

The intent properties you named are not treated as ordinary fields. Kai folds them into its research so the signal informs what it writes: an account that visited your pricing page three times gets a different opening than one that downloaded a report. You will see the effect in the sequence copy and can check the reasoning in the Research tab in Approvals, where the signal appears woven into the account and persona summaries rather than as raw field values. See The approval flow for the Research tab, and Instructions & briefs for how research feeds generation.

PreviousAlways-on campaigns