Get started

Sending through HubSpot Sequences

Kai can send through HubSpot Sequences instead of a dedicated outreach platform. It reads your sequence's steps, writes personalised copy per contact, and enrols them. Three parts of the setup are manual, because HubSpot's API does not allow them to be automated. This page covers all of it.

What you need first

How personalisation works, and why it differs from Lemlist

On Lemlist, Kai writes the merge tags into your step templates for you. HubSpot's Sequences API has no endpoint to create or edit step content of any kind, so that part cannot be automated. You add the tokens once, by hand, in the HubSpot sequence editor.

Kai writes each contact's personalised copy into custom contact properties. Your sequence template then references those properties as personalisation tokens. The properties are created automatically the first time a sequence is linked, so you do not need to build them yourself.

The property names follow the step order in your sequence:

In each sequence step, insert the matching property as a personalisation token. The step's own subject and body should contain the token and nothing else, because Kai writes the entire message rather than filling a gap in a template.

Check this before you send. If a step's template does not reference its token, the push still succeeds and every prospect receives whatever static text is sitting in that template. Nothing errors. Run the token check on the campaign after linking the sequence, and confirm the email bodies in the HubSpot editor yourself, because HubSpot's API does not expose step bodies and Kai cannot verify those for you.

Replies

HubSpot Sequences has no outbound webhook of its own, so replies reach Kai through a HubSpot workflow that you create.

  1. Trigger: a contact replies to a sequence email.
  2. Action: send a webhook to https://app.hirekai.org/webhook/reply.
  3. Add the header X-Kai-Webhook-Secret with your workspace's webhook secret.
  4. Include the contact's email and the reply body in the payload.

Without this Kai still sends, but it never sees a reply, which means no classification, no hand-raiser detection, no handover and nothing in the Replies tab. This step is not optional.

Opens, clicks and sends

Same pattern, pointed at /webhook/activity. Send the event name as one of sent, opened, clicked, replied, bounced or unsubscribed. These are the names Kai's reporting already understands, so no mapping is needed on either side.

Stopping a sequence on a lead score

HubSpot's API has no unenroll endpoint, so Kai cannot pull a contact out of a running sequence. HubSpot's workflow engine can, using its native Unenroll from sequence action.

This is the better place for it regardless. The lead score lives in HubSpot, so a workflow triggered on the threshold stops the sequence the moment the score changes, with no polling and no window where Kai and a rep are both in the prospect's inbox.

  1. Trigger: lead score is greater than or equal to your threshold.
  2. Action: unenroll from sequence.
  3. Action: rotate the contact owner to the rep who now owns it.
  4. Optional: send a webhook to Kai so the contact is marked handed over and stops being counted as active nurture.

What HubSpot cannot do that Lemlist can

PreviousConnecting your stack