Full HubSpot platform CLI covering CRM, CMS, Marketing, Conversations, and Automation.
.env in {baseDir}):text
# Required (Private App mode)
HUBSPOT_ACCESS_TOKEN=pat-na1-xxxxxxxx
# OR use OAuth 2.0 mode (set all three):
# HUBSPOT_CLIENT_ID=your-client-id
# HUBSPOT_CLIENT_SECRET=your-client-secret
# HUBSPOT_REFRESH_TOKEN=your-refresh-token
# Optional
# HUBSPOT_MAX_RESULTS=100
ScopeDescriptioncrm.objects.contacts.readView properties and other details about contactscrm.objects.contacts.writeCreate, delete, or make changes to contactscrm.objects.companies.readView properties and other details about companiescrm.objects.companies.writeCreate, delete, or make changes to companiescrm.objects.deals.readView properties and other details about dealscrm.objects.deals.writeCreate, delete, or make changes to dealscrm.objects.owners.readView details about users assigned to a CRM recordcrm.schemas.contacts.readView details about property settings for contactscrm.schemas.companies.readView details about property settings for companiescrm.schemas.deals.readView details about property settings for dealsticketsView, create, delete, or make changes to ticketsautomationWorkflowscontentSites, landing pages, CTA, email, blog, campaignsconversations.readView messages, comments, threads, recipient/user/assignment detailsformsAccess to the Forms API
cd {baseDir} && npm installbash
# List contacts
node {baseDir}/scripts/hubspot.mjs contacts list
# Search contacts by email
node {baseDir}/scripts/hubspot.mjs contacts search --query "john@example.com"
# Read contact details
node {baseDir}/scripts/hubspot.mjs contacts read --id 123
# Create a contact
node {baseDir}/scripts/hubspot.mjs contacts create --email "jane@example.com" --firstname Jane --lastname Doe
# Update a contact
node {baseDir}/scripts/hubspot.mjs contacts update --id 123 --phone "+1234567890"
# Delete a contact (requires --confirm)
node {baseDir}/scripts/hubspot.mjs contacts delete --id 123 --confirm
bash
node {baseDir}/scripts/hubspot.mjs companies list
node {baseDir}/scripts/hubspot.mjs companies search --query "Acme"
node {baseDir}/scripts/hubspot.mjs companies read --id 456
node {baseDir}/scripts/hubspot.mjs companies create --name "Acme Corp" --domain "acme.com"
node {baseDir}/scripts/hubspot.mjs companies update --id 456 --industry "Technology"
node {baseDir}/scripts/hubspot.mjs companies delete --id 456 --confirm
bash
node {baseDir}/scripts/hubspot.mjs deals list
node {baseDir}/scripts/hubspot.mjs deals search --query "Enterprise"
node {baseDir}/scripts/hubspot.mjs deals read --id 789
node {baseDir}/scripts/hubspot.mjs deals create --name "Big Deal" --amount 50000 --stage appointmentscheduled
node {baseDir}/scripts/hubspot.mjs deals update --id 789 --stage closedwon
node {baseDir}/scripts/hubspot.mjs deals delete --id 789 --confirm
bash
node {baseDir}/scripts/hubspot.mjs tickets list
node {baseDir}/scripts/hubspot.mjs tickets search --query "Bug"
node {baseDir}/scripts/hubspot.mjs tickets read --id 101
node {baseDir}/scripts/hubspot.mjs tickets create --subject "Login broken" --priority HIGH
node {baseDir}/scripts/hubspot.mjs tickets update --id 101 --stage 2
node {baseDir}/scripts/hubspot.mjs tickets delete --id 101 --confirm
bash
node {baseDir}/scripts/hubspot.mjs owners list
node {baseDir}/scripts/hubspot.mjs owners list --email "john@company.com"
node {baseDir}/scripts/hubspot.mjs owners read --id 55
bash
# List deal pipelines (default)
node {baseDir}/scripts/hubspot.mjs pipelines list
# List ticket pipelines
node {baseDir}/scripts/hubspot.mjs pipelines list --object-type tickets
bash
# List associations from contact to companies
node {baseDir}/scripts/hubspot.mjs associations list --from-type contacts --from-id 123 --to-type companies
# Create an association
node {baseDir}/scripts/hubspot.mjs associations create --from-type contacts --from-id 123 --to-type companies --to-id 456 --type-id 1
# Delete an association (requires --confirm)
node {baseDir}/scripts/hubspot.mjs associations delete --from-type contacts --from-id 123 --to-type companies --to-id 456 --confirm
bash
# List contact properties (default)
node {baseDir}/scripts/hubspot.mjs properties list
# List deal properties
node {baseDir}/scripts/hubspot.mjs properties list --object-type deals
bash
node {baseDir}/scripts/hubspot.mjs engagements notes
node {baseDir}/scripts/hubspot.mjs engagements emails
node {baseDir}/scripts/hubspot.mjs engagements calls
node {baseDir}/scripts/hubspot.mjs engagements tasks
node {baseDir}/scripts/hubspot.mjs engagements meetings
bash
node {baseDir}/scripts/hubspot.mjs blog-posts list
node {baseDir}/scripts/hubspot.mjs blog-posts list --state PUBLISHED
node {baseDir}/scripts/hubspot.mjs blog-posts read --id 1001
node {baseDir}/scripts/hubspot.mjs blog-posts create --name "My Post"
node {baseDir}/scripts/hubspot.mjs blog-posts update --id 1001 --name "Updated Title"
bash
node {baseDir}/scripts/hubspot.mjs pages list
node {baseDir}/scripts/hubspot.mjs pages read --id 2001
bash
node {baseDir}/scripts/hubspot.mjs domains list
bash
node {baseDir}/scripts/hubspot.mjs email-campaigns list
node {baseDir}/scripts/hubspot.mjs email-campaigns read --id 3001
bash
node {baseDir}/scripts/hubspot.mjs forms list
node {baseDir}/scripts/hubspot.mjs forms read --id 4001
bash
node {baseDir}/scripts/hubspot.mjs marketing-emails list
node {baseDir}/scripts/hubspot.mjs marketing-emails read --id 5001
node {baseDir}/scripts/hubspot.mjs marketing-emails stats --id 5001
bash
node {baseDir}/scripts/hubspot.mjs lists list
node {baseDir}/scripts/hubspot.mjs lists read --id 6001
bash
node {baseDir}/scripts/hubspot.mjs conversations list
node {baseDir}/scripts/hubspot.mjs conversations read --id 7001
node {baseDir}/scripts/hubspot.mjs messages list --thread-id 7001
bash
node {baseDir}/scripts/hubspot.mjs workflows list
node {baseDir}/scripts/hubspot.mjs workflows read --id 8001
--confirm flag~/.cache/openclaw/hubspot-token.jsoncommander — CLI frameworkdotenv — environment variable loadingfetch (requires Node >= 18)Abdelkrim BOUJRAF — ALT-F1 SRL, Brussels 🇧🇪 🇲🇦 X: @altf1be