matimo-hubspot
HubSpot CRM tools for Matimo - manage contacts, companies, deals, tickets, and more.
Installation
pip install matimo matimo-hubspot
Available Tools (50 Total)
Full CRUD coverage across 10 HubSpot object types:
| Object | Create | Get | List | Update | Delete |
|---|---|---|---|---|---|
| Contacts | ✅ | ✅ | ✅ | ✅ | ✅ |
| Companies | ✅ | ✅ | ✅ | ✅ | ✅ |
| Deals | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tickets | ✅ | ✅ | ✅ | ✅ | ✅ |
| Leads | ✅ | ✅ | ✅ | ✅ | ✅ |
| Products | ✅ | ✅ | ✅ | ✅ | ✅ |
| Line Items | ✅ | ✅ | ✅ | ✅ | ✅ |
| Orders | ✅ | ✅ | ✅ | ✅ | ✅ |
| Invoices | ✅ | ✅ | ✅ | ✅ | ✅ |
| Custom Objects | ✅ | ✅ | ✅ | ✅ | ✅ |
Tool naming convention: hubspot-{verb}-{object}
Examples: hubspot-create-contact, hubspot-list-deals, hubspot-update-ticket, hubspot-delete-company
Quick Start
import asyncio
import os
from matimo import Matimo
from matimo_hubspot import get_tools_path
async def main():
matimo = await Matimo.init(get_tools_path())
# Create a contact
contact = await matimo.execute('hubspot-create-contact', {
'firstname': 'Jane',
'lastname': 'Smith',
'email': 'jane@example.com',
'company': 'Acme Corp',
})
# List all deals
deals = await matimo.execute('hubspot-list-deals', {
'limit': 20,
})
# Update a ticket
await matimo.execute('hubspot-update-ticket', {
'ticket_id': '12345',
'subject': 'Updated subject',
'hs_pipeline_stage': '4',
})
asyncio.run(main())
Authentication
export MATIMO_HUBSPOT_API_KEY="pat-na1-your-private-app-token"
Setting Up a HubSpot Private App
- In HubSpot, go to Settings → Integrations → Private Apps
- Click Create a private app
- Under Scopes, select the CRM scopes you need (see table below)
- Copy the Access Token
Required Scopes by Object
| Objects | Scopes |
|---|---|
| Contacts | crm.objects.contacts.read, crm.objects.contacts.write |
| Companies | crm.objects.companies.read, crm.objects.companies.write |
| Deals | crm.objects.deals.read, crm.objects.deals.write |
| Tickets | tickets (read + write) |
| Custom Objects | crm.objects.custom.read, crm.objects.custom.write |
LangChain CRM Agent Example
from matimo import Matimo
from matimo_hubspot import get_tools_path
from matimo.integrations.langchain import convert_tools_to_langchain
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
matimo = await Matimo.init(get_tools_path())
lc_tools = convert_tools_to_langchain(
matimo.list_tools(), matimo,
credentials={'MATIMO_HUBSPOT_API_KEY': os.environ['MATIMO_HUBSPOT_API_KEY']},
)
llm = ChatOpenAI(model='gpt-4o-mini')
prompt = ChatPromptTemplate.from_messages([
('system', 'You are a CRM assistant.'),
('human', '{input}'),
('placeholder', '{agent_scratchpad}'),
])
agent = create_tool_calling_agent(llm, lc_tools, prompt)
executor = AgentExecutor(agent=agent, tools=lc_tools)
result = await executor.ainvoke({'input': 'Find all open deals and summarize pipeline status'})
Documentation
Links
- PyPI: https://pypi.org/project/matimo-hubspot/
- GitHub: https://github.com/tallclub/matimo
- HubSpot Developer Docs: https://developers.hubspot.com/
Metadata
Release files for matimo-hubspot 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| matimo_hubspot-0.4.0.tar.gz | 12.3 kB | Without provenance | Details for matimo_hubspot-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| matimo_hubspot-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for matimo_hubspot-0.4.0-py3-none-any.whl |
Total release size: 57.5 kB
Release files / matimo_hubspot-0.4.0.tar.gz
| Download URL | matimo_hubspot-0.4.0.tar.gz |
|---|---|
| Size | 12.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4bdf3f5c41c46f051e2c518b88eb63f8647d9b74930a292bbcc6f538cac953ca
|
|
BLAKE2b-256 checksum How to use checksums |
24123bb4d58b2530650115b3a9c5833b3c52faf7944b68fbc104609262f1dc54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / matimo_hubspot-0.4.0-py3-none-any.whl
| Download URL | matimo_hubspot-0.4.0-py3-none-any.whl |
|---|---|
| Size | 45.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a933d5dc5c55c8d81064c1b1104379e060186186730fbdfe2e330b0743986c50
|
|
BLAKE2b-256 checksum How to use checksums |
1ee6191da748658e2cda2e61d3bb4b1006b4f2280c7f8f3b4f23109cb0e57927
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for matimo-hubspot 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.