canonical: https://jentic.com/apis/hubspot.com/hubspot-automation-sequences

# HubSpot Automation Sequences

The HubSpot Sequences API exposes the sales sequences feature for salespeople doing one-to-one outreach. GET /automation/v4/sequences/ lists the sequences available on the portal, GET /automation/v4/sequences/{sequenceId} returns a single sequence's metadata, GET /automation/v4/sequences/enrollments/contact/{contactId} returns the active enrollment for a specific contact, and POST /automation/v4/sequences/enrollments enrolls a contact in a sequence. Authentication uses OAuth 2.0 access tokens or a private app token sent in the private-app header.

## For AI agents

Read HubSpot sales sequences and enroll contacts so AI agents can drive one-to-one outreach without leaving an external workflow.

## Scope

Does not unenroll contacts, send marketing emails, or manage workflow definitions - use only for listing HubSpot sales sequences and enrolling contacts in them.

## Capabilities

- List the sales sequences configured on a HubSpot portal
- Retrieve a single sequence by id with its name and step count
- Read the active sequence enrollment for a specific contact
- Enroll a contact in a sequence with a chosen sender and start date
- Drive sequence enrollments from external triggers like new lead events

## Use cases

### Auto-enroll inbound leads in the right sequence

When a new lead is created from an inbound form, an integration can immediately enroll them in the sequence that matches their persona. POST /automation/v4/sequences/enrollments accepts a contactId, a sequenceId, and a senderEmail so the right salesperson owns the outreach. The response returns the enrollment id which the integration logs against the lead record.

Example prompt: Call POST /automation/v4/sequences/enrollments with contactId, sequenceId, and senderEmail derived from the lead's territory

### Avoid double-enrolment on returning leads

Before enrolling a contact, an integration checks GET /automation/v4/sequences/enrollments/contact/{contactId} to see if there is already an active enrollment. If the response shows an active sequence, the integration skips enrollment and logs the existing one. This prevents salespeople from sending duplicate outreach to the same contact.

Example prompt: Call GET /automation/v4/sequences/enrollments/contact/{contactId} and skip enrollment if the response contains an active sequence id

### Pick the right sequence from a list

An ops console renders a dropdown of sequences for a sales rep to choose from. GET /automation/v4/sequences/ lists the sequences on the portal with id and name, so the dropdown stays in sync with what salespeople have built without hand-coding sequence ids in the integration.

Example prompt: Call GET /automation/v4/sequences/ and render the id and name of each result as options in the rep's enrollment dropdown

### Agent integration via Jentic

A sales agent watching for new MQLs can enroll them in the matching sequence in real time. Through Jentic the agent searches for the enrollment operation, loads the schema, and executes the call with the lead's contact id, the chosen sequence id, and the assigned rep's email. The HubSpot credential never leaves your Jentic One instance.

Example prompt: Search Jentic for 'enroll a contact in a hubspot sales sequence', load POST /automation/v4/sequences/enrollments, and execute with contactId, sequenceId, and senderEmail

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /automation/v4/sequences/ | List sales sequences on the portal |
| GET | /automation/v4/sequences/{sequenceId} | Retrieve a sequence by id |
| GET | /automation/v4/sequences/enrollments/contact/{contactId} | Retrieve the active sequence enrollment for a contact |
| POST | /automation/v4/sequences/enrollments | Enroll a contact in a sequence |

## Key resources

- **Public Sequences** — List sequences and read a single sequence by id
- **Public Enrollments** — Read a contact's active enrollment and enroll a contact in a sequence

## Why Jentic

- **Setup:** Wiring HubSpot Automation Sequences by hand means setting up the OAuth authorization-code flow or a private app token, pointing at api.hubapi.com, and coding the enrollment request and paging yourself. Through Jentic you install once, import Automation Sequences from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Enrollment travels in the request body of /automation/v4/sequences/enrollments, so scope your agent to the operations it needs, such as listing sequences and reading a contact's enrollments. You choose the operations it may call, so enrolling a contact is only available if you include it.
- **Credential handling:** Your HubSpot OAuth token or private app token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enroll a contact in a HubSpot sales sequence' or 'list sequences', and Jentic returns the matching Automation Sequences operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot Automation V4** — Workflows handle one-to-many marketing automation while Sequences handle one-to-one sales touches
- **HubSpot CRM Contacts** — Resolve a contact id before enrolling them in a sequence
- **Salesforce API** — Salesforce Cadences are the equivalent of HubSpot Sequences for Salesforce-first organisations
- **Pipedrive API** — Pipedrive offers automated outreach steps for sales reps in its own CRM

## FAQ

### What authentication does the HubSpot Sequences API use?

The spec defines two security schemes: OAuth 2.0 access tokens and private app tokens sent in the private-app header. Both can call all four endpoints. Through Jentic the credential is stored encrypted in the vault.

### Can I enroll a contact in a sequence with the Sequences API?

Yes. POST /automation/v4/sequences/enrollments accepts a contactId, a sequenceId, and a senderEmail. The senderEmail must belong to a HubSpot user on the portal because sequence steps send from that user's connected mailbox.

### What are the rate limits for the HubSpot Sequences API?

The spec does not declare per-endpoint limits. Sequence calls share the standard HubSpot per-account limit of around 100 requests per 10 seconds for OAuth and private apps. Enrollment-heavy jobs should batch their work to avoid bursts.

### How do I check whether a contact is already enrolled?

Call GET /automation/v4/sequences/enrollments/contact/{contactId}. The response returns the active enrollment, including the sequence id and step, or an empty response if the contact is not currently in any sequence.

### How do I enroll a contact through Jentic?

Search Jentic for 'enroll a contact in a hubspot sales sequence', load the schema for POST /automation/v4/sequences/enrollments, and execute with contactId, sequenceId, and senderEmail. Jentic returns the new enrollment id.

### Can I unenroll a contact through this API?

Not directly. The four exposed endpoints cover listing sequences, reading a sequence, reading a contact's enrollment, and creating an enrollment. To unenroll, the salesperson must end the sequence from the HubSpot UI on the contact record.

### Can I limit what my agent is allowed to do with the HubSpot Sequences API?

Yes. Because you run your own self-hosted Jentic One instance, you decide which of the four Sequences operations the agent may call, so you can allow read-only access such as listing sequences with GET /automation/v4/sequences/ and checking a contact's active enrollment with GET /automation/v4/sequences/enrollments/contact/{contactId} while withholding the ability to enroll. Enrolling a contact via POST /automation/v4/sequences/enrollments is only available to the agent if you explicitly include that operation in its allowed set. Your HubSpot OAuth or private app token is held by your instance and injected at execution time, so the agent only ever reaches the operations you scoped.
