HubSpot's CRM platform contains the marketing, sales, service, operations, and website-building software you need to grow your business.
108 actions Leo can use in the apps and agents it builds for you: 56 that read HubSpot data, 52 that create or update it.
Fetch one quote by ID or list quotes with CRM v3 pagination (after, limit). Complements Create CRM Object for quotes when you need read access outside Search CRM.
List meeting scheduling pages for a HubSpot organizer. Returns a single page of results; use Limit to control the page size and check the (of N total) summary to see if more results exist beyond the page returned.
List records of a custom object type with pagination and property selection. HubSpot does NOT support the /search endpoint for custom objects — use this list action to browse records, then use Get Custom Object to fetch full details by ID. Use List Custom Object Schemas first to obtain the correct objectType identifier (fullyQualifiedName or objectTypeId). Use List Custom Object Properties to discover which properties are available to request.
Discover all custom object types defined in the HubSpot account. Returns the objectTypeId, fullyQualifiedName, name, labels (singular/plural), primaryDisplayProperty, and a list of all property names for each schema. Call this first before any other custom object operation to obtain the correct objectType identifier. Standard object types (contacts, companies, deals, tickets) do NOT appear here.
Docs ↗List all property definitions for a specific custom object type. Returns each property's name, label, type, fieldType, and enum options (for enumeration fields). Use List Custom Object Schemas first to obtain the correct objectType identifier (either fullyQualifiedName like p_pd_eval_movie or objectTypeId like 2-12345678). Standard object types (contacts, companies, deals, tickets) are not supported here — use Get Properties or Search Properties for those.
List CRM v4 associations from a source record to a target object type. Returns associated record IDs and association types for each link. Direction matters: from is the record you are querying from; swap from/to to traverse the relationship the other way.
List CRM v4 associations from a source record to a target object type. Returns associated record IDs and association types for each link. Direction matters: from is the record you are querying from; swap from/to to traverse the relationship the other way.
List association type definitions (labels and type IDs) between two object types in CRM v4. Use the returned typeId values when creating associations with Create Association or Create CRM Object (associations JSON). Order matters: from/to defines the direction of the relationship.
List engagements (notes, tasks, calls, meetings, emails, etc.) associated with a CRM record using HubSpot's legacy Engagements v1 paged API. This endpoint is documented for company, deal, and quote; other object types may return errors. Use Offset for pagination when hasMore is true. For newer CRM v3 engagement objects, prefer v4 List CRM Associations from the record to notes, tasks, calls, etc.
Retrieves a single thread's metadata, including status, assignee, associations, and latest-message info.
Docs ↗Get a single HubSpot owner (user) by ID. Provide an owner ID or use List Owners to fetch IDs.
Docs ↗Fetch the upcoming availability windows (and busy times) for a meeting scheduling page. Use this when you only need the open slots; use Get Meeting Link Booking Info for the full booking configuration.
Docs ↗Get a publicly available URL for a file that was uploaded using a Hubspot form.
Docs ↗Retrieves one or more engagements by their IDs. Use this action to fetch details about multiple engagements, such as their types, timestamps, and associated CRM objects. Requires engagement IDs, which you can obtain from the List CRM Objects action.
Docs ↗Fetch one or more custom object records by ID in a single request. Use List Custom Objects first to browse records and find the IDs you need, then use this tool to retrieve full property details. Use List Custom Object Schemas to get the correct objectType identifier. Max 100 IDs per request.
Resolves an actor ID (e.g. the value returned by a message's senders[].actorId field) to its name, email, and type.
Search for property definitions (field names) on a CRM object type. Returns lightweight results: property names, labels, descriptions, and types — without enum options. Use this to discover what fields exist before creating or updating records. To get full details including valid enum values for a specific property, use Get Properties. To search for actual CRM data/records, use Search CRM Objects. For custom object properties, use List Custom Object Properties instead (custom object types are not in the standard type list).
Docs ↗Search a CRM object type by a single property. Set Object Type, Search Property (internal name, e.g. email or dealname; use Get Properties / Search Properties to find valid names), and Search Value. With Exact Match off, partial (substring) matches are returned. Results are capped per call — if paging.next is present in the response, call again with Offset advanced to fetch the next page. Example: Object Type deal, Search Property dealname, Search Value InGen Annual Contract. Returns matching records plus paging. For lookups, keep results small with Limit and Fields (return only the properties you need).
Search HubSpot CRM records (contacts, companies, deals, tickets, etc.) using text queries or filters. Returns matching records with properties, pagination, and total count. Use the query parameter for simple text search across default searchable fields (contacts: firstname, lastname, email, phone, company; companies: name, website, domain, phone; deals: dealname, pipeline, dealstage, description). Use filterGroups for advanced filtering with operators like EQ, NEQ, LT, GT, CONTAINS_TOKEN, IN, HAS_PROPERTY, etc. You can combine up to 5 filter groups (OR logic) with up to 6 filters each (AND logic within a group). Supports standard object types only (contacts, companies, deals, tickets, etc.). For custom objects, use List Custom Object Schemas to discover available types, then List Custom Objects to list records.
List all pipelines and their stages for deals or tickets. Returns pipeline IDs, labels, and each pipeline's ordered stages with stage IDs and labels. Use this to discover valid pipeline and dealstage / hs_pipeline_stage values before creating or updating deals and tickets.
List owners (users) in the HubSpot account. Returns owner IDs, names, and emails. Use this to discover valid values for the hubspot_owner_id property when creating or updating any CRM object (contacts, companies, deals, tickets, etc.).
Get details about the current authenticated HubSpot user, including their owner ID, email, hub ID, and account info. Use this to determine the user's identity — the ownerId is needed to filter CRM records owned by the current user (e.g. 'my deals' requires filtering by hubspot_owner_id). Also returns available CRM object types for the account.
Get detailed property definitions for specific properties on a CRM object type. Returns full metadata including data types, enum options with valid values, referenced object types, and read-only status. Use this after Search Properties to get valid values for specific fields (e.g. enum options for dealstage or hs_pipeline). Property details can be large — fetch only the properties you need rather than all of them. For custom object properties, use List Custom Object Properties instead (custom object types are not in the standard type list).
Get a single meeting engagement from HubSpot by its id, with a default set of meeting properties. Add Additional properties to retrieve to include more. Example: Object ID 123. Returns the meeting record (title, body, start/end time).
Get a single deal from HubSpot by its id, with a default set of deal properties. Add Additional properties to retrieve to include more (use Get Properties for deals). Example: Object ID 123, Additional properties ["amount", "dealstage"]. Returns the deal record.
Fetch one or more CRM objects by their IDs in a single request. Returns the requested properties for each object. Use Search CRM Objects first to find record IDs, then use this tool to fetch full details. Max 100 IDs per request. Supports standard object types only. For custom objects, use Get Custom Object instead.
Docs ↗Get a single contact from HubSpot by its id, with a default set of contact properties. Add Additional properties to retrieve to include more (use Get Properties for contacts). Look up the id with Search CRM by email if you only have an address. Example: Object ID 123, Additional properties ["jobtitle"]. Returns the contact record.
Get a single company from HubSpot by its id, with a default set of company properties. Add Additional properties to retrieve (internal names; use Get Properties for companies) to include more. Example: Object ID 123, Additional properties ["industry", "numberofemployees"]. Returns the company record.
List meetings associated with a contact, company, or deal in HubSpot. Set From Object Type and Object ID (for contacts you may pass an email instead of the numeric id). Optionally narrow with Timeframe (today, this_week, this_month, last_month, or custom with Start/End Date), or set Most Recent to return only the latest meeting. Returns up to 100 meetings with default meeting properties. Example: From Object Type contacts, Object ID [email protected], Timeframe this_month.
Retrieve a list of all workflows.
Docs ↗Retrieve emails sent by a workflow by ID.
Docs ↗Retrieve detailed information about a specific workflow.
Docs ↗Retrieves available options for the Pipeline field.
Retrieves a list of threads.
Docs ↗Retrieves a list of templates.
Docs ↗Retrieves available options for the Template Path field.
Retrieves a list of site pages.
Docs ↗Retrieves available options for the Object Schema field.
Retrieves a list of messages in a thread.
Docs ↗Retrieves a list of marketing events.
Docs ↗Retrieves a list of marketing emails.
Docs ↗Retrieves a list of inboxes.
Docs ↗Retrieves a list of forms.
Docs ↗Retrieves available options for the Form field.
Retrieves available options for the File URL field.
Retrieves available options for the Pipeline field.
Retrieves available options for the Custom Object Type field.
Retrieves a list of channels.
Docs ↗Retrieves a list of campaigns.
Docs ↗Retrieves a list of blog posts.
Docs ↗Retrieves the subscription preferences for a contact.
Docs ↗Retrieve a contact's sequence enrollment status.
Docs ↗Retrieves a single inbox by its ID.
Docs ↗Retrieves a single channel by its ID.
Docs ↗Retrieves the draft version of a blog post.
Docs ↗Retrieves emails associated with a specific object (contact, company, or deal).
Docs ↗Updates an existing thread's status. To archive a thread, use the Archive Thread action; to restore an archived thread, use the Unarchive Thread action. HubSpot's PATCH endpoint does not support either operation via a status change.
Docs ↗Restores a previously-archived thread, returning it to the active inbox. Sends PATCH with body { archived: false }, the only restore path HubSpot's API supports. The Thread ID dropdown lists archived threads.
Add a contact to a workflow. Note: The Workflows API currently only supports contact-based workflows and is only available for Marketing Hub Enterprise accounts.
Docs ↗Book a meeting on a HubSpot meeting scheduling page. Creates a calendar event for the organizer and registers the booker as a contact.
Docs ↗Archives a thread (soft delete). The thread is hidden from active views but can be restored via the HubSpot UI or by listing archived threads.
Docs ↗MCP and AI agents: Prefer this action when the user wants to leave a note on a HubSpot contact using a contact ID and note text. Exposes only hubspot, contactId, and noteBody (no engagement-type step, no reloadProps, no dynamic HubSpot schema fields). Do not use Create Engagement for this workflow. For every writable note property or non-contact associations, use Create Note instead.
Update a lead in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names. Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "hs_lead_name": "Site B Expansion - Priority" }. Returns the updated lead.
Update a deal in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names. Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "dealstage": "closedwon", "amount": "90000" }. Returns the updated deal.
Update a custom object record in HubSpot by id. Set Custom Object Type (the object's fullyQualifiedName, e.g. p_pets) and Object ID, and put the fields to change in Object Properties. Example: Custom Object Type p_pets, Object ID 123, Object Properties { "birthday": "1993-06-12" }. Returns the updated record.
Update an existing CRM record by ID. Pass only the properties you want to change — unspecified properties are left unchanged. Use Search CRM Objects to find the record ID, Search Properties to discover available fields, and Get Properties to find valid enum values.
Docs ↗Update a contact in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names (only the fields you pass are modified). If you don't have the id, look it up first with Search CRM (by email, or by name). Example: Object ID 123, Object Properties { "jobtitle": "Chief Paleontologist" }. Returns the updated contact.
Update a company in HubSpot by id. Set Object ID and put the fields to change in Object Properties as HubSpot internal names (only the fields you pass are modified). Look up the id with Search CRM if you only have a name. Example: Object ID 123, Object Properties { "phone": "555-0100", "industry": "BIOTECHNOLOGY" }. Returns the updated company.
Create a support ticket in HubSpot. Set Ticket Name, Pipeline, and Pipeline Stage (use List Pipelines and Stages for tickets to get valid ids), and put extra fields in Object Properties. Example: subject Login broken, hs_pipeline 0, hs_pipeline_stage 1, Object Properties { "hs_ticket_priority": "HIGH" }. Returns the created ticket with its id.
Create a task engagement in HubSpot. Put task fields in Object Properties as HubSpot internal names (hs_task_subject, hs_task_body, hs_task_status, hs_task_priority); hs_timestamp is defaulted for you. Optionally associate it with a record via Associated Object Type/ID + Association Type. Example: Object Properties { "hs_task_subject": "Call Art Vandelay", "hs_task_status": "NOT_STARTED", "hs_task_priority": "HIGH" }. Returns the created task with its id.
Create a contact in HubSpot, or update it when one with the same email already exists (enable Update If Exists). Put contact fields in Object Properties as HubSpot internal names. Example: Object Properties { "email": "[email protected]", "firstname": "Ada", "jobtitle": "CTO" }. Returns the created or updated contact with its id.
Create a HubSpot CRM note. Put the note text in Object Properties as hs_note_body (e.g. { "hs_note_body": "Reviewed the Q3 numbers" }). For only a contact ID + note body, Add Note to Contact is simpler. To associate the note with another record, supply toObjectType, toObjectId, and associationType together.
Create a meeting engagement in HubSpot. Put meeting fields in Object Properties (hs_meeting_title, hs_meeting_body, hs_meeting_start_time, hs_meeting_end_time as ISO-8601); hs_timestamp defaults to the start time. Set Associated Object Type and optionally link a record via Associated Object ID + Association Type. Example: Object Properties { "hs_meeting_title": "Kickoff", "hs_meeting_start_time": "2026-08-27T14:00:00Z", "hs_meeting_end_time": "2026-08-27T15:00:00Z" }. Returns the created meeting with its id.
Create a lead in HubSpot associated with an existing contact. Set Contact ID (the contact to link) and put lead fields in Object Properties as HubSpot internal names. Example: Contact ID 12345, Object Properties { "hs_lead_name": "Isla Nublar Opportunity" }. Returns the created lead with its id.
Create a task, meeting, email, call, or note engagement with optional associations. If the request does not make the engagement type clear, ask which type (note, task, meeting, email, or call) before creating rather than guessing. Set Engagement Type and pass engagement fields in Object Properties (HubSpot property names, e.g. hs_note_body for notes). No reloadProps step and no CONFIGURE_COMPONENT requirement: association fields accept raw HubSpot IDs (use Search CRM or the Associations API to resolve associationType when needed). For only a note on a contact by ID, Add Note to Contact (hubspot-add-note-to-contact) is still simpler.
Create a deal in HubSpot. Set Deal Name, Pipeline, and Stage, and put any extra fields in Object Properties as HubSpot internal names. Example: Deal Name InGen Annual Contract, Pipeline default, Stage appointmentscheduled, Object Properties { "amount": "250000", "closedate": "2026-09-23" }. Returns the created deal with its id.
Create a custom object record in HubSpot. Set Custom Object Type to the object's fullyQualifiedName (e.g. p_pets; use List Custom Object Schemas to find it) and put fields in Object Properties. Example: Custom Object Type p_pets, Object Properties { "pet_name": "Rexy" }. Returns the created record with its id.
Create a new CRM record (contact, company, deal, ticket, etc.). Pass property values as a JSON object in the properties parameter. Use Search Properties to discover available fields for the object type, Get Properties to find valid enum values (e.g. lifecyclestage, dealstage), and List Pipelines and Stages to find valid pipeline/stage IDs for deals and tickets. Use List Owners to find valid hubspot_owner_id values.
Create a company in HubSpot. Put the company fields in Object Properties as a JSON object of HubSpot internal property names (use Get Properties for companies to discover them). Example: { "name": "InGen", "domain": "ingen.com", "industry": "BIOTECHNOLOGY" }. Returns the created company with its id.
Log a WhatsApp, LinkedIn, or SMS communication in HubSpot. Put the message fields in Object Properties (hs_communication_channel_type = SMS | WHATS_APP | LINKEDIN_MESSAGE, hs_communication_body); hs_communication_logged_from and hs_timestamp are set for you. Optionally associate it with a record via Associated Object Type/ID + Association Type. Example: Object Properties { "hs_communication_channel_type": "SMS", "hs_communication_body": "Reminder: call at 9am" }. Returns the created communication with its id.
Create an association (link) between two CRM records. For example, associate a contact with a company, a deal with a contact, or a ticket with a company. Common association type IDs: contact→company (1), company→contact (2), deal→contact (3), contact→deal (4), deal→company (5), company→deal (6), ticket→contact (15), contact→ticket (16), ticket→company (26), company→ticket (25).
Docs ↗Update a page in Hubspot.
Docs ↗Update a landing page in HubSpot.
Docs ↗Update some of the form definition components.
Docs ↗Updates an existing blog post in HubSpot.
Docs ↗Updates the draft version of an existing blog post in HubSpot.
Docs ↗Sends a message to a thread.
Docs ↗Schedules a blog post to be published at a specified time.
Docs ↗Retrieve the IDs of v3 workflows that have been migrated to the v4 API.
Docs ↗Pushes a blog post draft live, making it the published version.
Docs ↗Enroll a contact into a HubSpot sequence.
Docs ↗Delete a workflow by ID.
Docs ↗Create a new workflow.
Docs ↗Create a page in HubSpot.
Docs ↗Create a landing page in Hubspot.
Docs ↗Create a form in HubSpot.
Docs ↗Create a marketing email in Hubspot.
Docs ↗Create a contact workflow in Hubspot.
Docs ↗Creates a new blog post in HubSpot.
Docs ↗Create associations between objects.
Docs ↗Clone a site page in Hubspot.
Docs ↗Clone a marketing email in HubSpot.
Docs ↗Upsert a batch of companies in Hubspot.
Docs ↗Update a batch of companies in Hubspot.
Docs ↗Create or update a batch of contacts by its ID or email.
Docs ↗Create a batch of companies in Hubspot.
Docs ↗Adds a contact to a specific static list.
Docs ↗Adds a comment to a thread.
Docs ↗Leo connects HubSpot to the ERP your business already runs on: the records it reads in HubSpot land in your ERP, and what changes in the ERP flows back.
Authorize HubSpot once, in a couple of clicks. Leo only gets the permissions you grant.
In plain language: the dashboard, portal or agent you want across HubSpot and your ERP. No code, no mapping spreadsheets.
Leo builds it, you review, it goes live. Agents run on a schedule or on events, under the guardrails you set.