npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ghl-cli-pro

v0.2.5

Published

GoHighLevel CLI — public API v2 plus internal API. Smart-routed, agent-ready.

Readme

GHL CLI Pro

Standalone GoHighLevel CLI. 70 modules, 197 commands across public API v2 and internal API. No external MCP dependency.

Install

npm install -g ghl-cli-pro
ghl --help

Or from source:

git clone https://github.com/revanthrevo/ghl-cli.git
cd ghl-cli
npm install
npm run build
./install.sh

Quick Start

# List contacts
ghl contacts list --limit 20

# Get a contact
ghl contacts get <contactId>

# Create a contact
ghl contacts create --first-name John --last-name Doe --email [email protected]

# Send an email
ghl conversations send --contact-id <id> --type Email --message "hello" --subject "Hi"

# List workflows
ghl workflows list

# List funnels
ghl funnels list

Setup

Credentials are written to ~/.config/ghl-cli/config.json.

Zero-Touch Setup (Recommended)

The fastest way to get started. Works for both human users and AI agents.

# 1. Install the Chrome extension
# Copy the `extension/` folder into Chrome: chrome://extensions/ → Load unpacked

# 2. Start the CLI and let it guide you
ghl setup auto

What happens: CLI starts a local listener. You log into GHL in Chrome, click "Setup" in the extension popup. Extension auto-captures your Firebase session, creates a Private Integration Token, and sends everything to CLI. Done.

Manual Setup Wizard

If the extension can't auto-create a Private Integration Token:

ghl setup wizard

Guides you through:

  • Location ID — Your GHL location identifier
  • Private Integration Token (PIT) — From GHL Settings → Integrations
  • Firebase Token — From Chrome extension or manual paste

License

# Activate a Gumroad license key
ghl license activate --key <GUMROAD-LICENSE-KEY>

# Check status
ghl license status

# Remove license
ghl license remove

Buy a license at the Gumroad product page. Key is emailed automatically after purchase.


Modules

Contacts & CRM

contacts — Core contact operations

ghl contacts list [--query <q>] [--limit <n>]
ghl contacts get <contactId>
ghl contacts create [--first-name --last-name --email --phone] [--data <json>]
ghl contacts update <contactId> [--first-name --last-name --email --phone] [--data <json>]
ghl contacts delete <contactId>

contacts-extra — Bulk operations and contact enrichment

ghl contacts count [--query <q>]
ghl contacts upsert [--first-name --last-name --email --phone] [--data <json>]
ghl contacts bulk-add-tags --contact-ids <csv> --tags <csv>
ghl contacts bulk-remove-tags --contact-ids <csv> --tags <csv>
ghl contacts bulk-delete --contact-ids <csv>
ghl contacts bulk-add-to-workflow --contact-ids <csv> --workflow-id <id>
ghl contacts add-tags <contactId> --tags <csv>
ghl contacts remove-tags <contactId> --tags <csv>
ghl contacts add-to-workflow <contactId> --workflow-id <id>
ghl contacts remove-from-workflow <contactId> --workflow-id <id>
ghl contacts notes list <contactId>
ghl contacts notes create <contactId> --body <text>
ghl contacts tasks list <contactId>
ghl contacts tasks create <contactId> --title --due-date [--data <json>]
ghl contacts appointments list <contactId>

contacts-smart-lists — Smart list membership

ghl contacts smart-lists list [--limit <n>]

tags — Tag management

ghl tags list
ghl tags create --name <name> [--data <json>]
ghl tags update <tagId> --name <name> [--data <json>]
ghl tags delete <tagId>

custom-fields — Custom field definitions and folders

ghl custom-fields list --object-key <key> [--json]
ghl custom-fields get <id>
ghl custom-fields create --data-type --field-key --object-key --parent-id --show-in-forms true|false [--name --data <json>]
ghl custom-fields update <id> --data <json>
ghl custom-fields delete <id>
ghl custom-fields folders create --object-key --name [--data <json>]
ghl custom-fields folders update <id> --data <json>
ghl custom-fields folders delete <id>

businesses — Business profiles

ghl businesses list [--limit <n>] [--skip <n>]
ghl businesses get <businessId>
ghl businesses create --name <name> [--data <json>]
ghl businesses update <businessId> --data <json>
ghl businesses delete <businessId>

companies — Company records (read-only)

ghl companies get <companyId>

associations — Contact associations

ghl associations list [--limit <n>]
ghl associations get <id>
ghl associations create --type --first-id --second-id [--data <json>]

courses — Course catalog

ghl courses list
ghl courses get <courseId>

Communication

conversations — Conversation inbox

ghl conversations list [--contact-id <id>] [--limit <n>]
ghl conversations get <conversationId>
ghl conversations send --contact-id <id> --type <SMS|Email|...> --message <text> [--data <json>]

messages — Direct messaging with internal API

ghl messages list --contact-id <id> [--limit <n>]
ghl messages get <messageId>
ghl messages send --contact-id <id> --type <SMS|Email|...> --message <text> [--data <json>]
ghl messages send-internal --contact-id <id> --message <text> [--data <json>]
ghl messages templates list [--limit <n>]
ghl messages bulk --contact-ids <csv> --type <SMS|Email> --message <text>

emails — Email templates and campaigns (read + schedule CRUD)

ghl emails templates list [--limit <n>] [--offset <n>]
ghl emails schedule list [--limit <n>] [--offset <n>]
ghl emails template delete <templateId>

templates — Email template and campaign management

ghl templates list [--type email|sms|...] [--limit <n>]
ghl templates get <templateId>
ghl templates create --name --type [--data <json>]
ghl templates update <templateId> --data <json>
ghl templates delete <templateId>
ghl templates rename <templateId> --name <name>
ghl templates archive <templateId>
ghl templates campaigns list [--limit <n>]
ghl templates campaign create --name --data <json>

notifications — Notification management

ghl notifications list [--limit <n>]
ghl notifications get <notificationId>
ghl notifications mark-read <notificationId>
ghl notifications delete <notificationId>

notes — Contact notes

ghl notes list <contactId>
ghl notes create <contactId> --body <text>
ghl notes update <noteId> --body <text>
ghl notes delete <noteId>

reviews — Reviews

ghl reviews list [--limit <n>]
ghl reviews get <reviewId>

surveys — Surveys

ghl surveys list [--limit <n>] [--skip <n>] [--type <t>]
ghl surveys submissions [--survey-id <id>] [--limit <n>] [--page <n>] [--q <text>] [--start-at <date>] [--end-at <date>]

forms — Form definitions, fields, and submissions

ghl forms list [--limit <n>]
ghl forms get <formId>
ghl forms create --name --data <json>
ghl forms update <formId> --data <json>
ghl forms delete <formId>
ghl forms submissions [--form-id <id>] [--start-at <date>] [--end-at <date>]
ghl forms fields list --form-id <id>
ghl forms fields create --form-id <id> --data <json>
ghl forms fields update <fieldId> --data <json>
ghl forms fields delete <fieldId>

Sales

opportunities — Pipeline opportunities

ghl opportunities list [--query <q>] [--limit <n>] [--pipeline-id <id>]
ghl opportunities get <id>
ghl opportunities create --pipeline-id --name --status --contact-id [--data <json>]
ghl opportunities update <id> --data <json>
ghl opportunities delete <id>
ghl opportunities move <id> --stage <stageId>

pipelines — Pipeline management

ghl pipelines list
ghl pipelines get <pipelineId>
ghl pipelines create --name --data <json>
ghl pipelines update <pipelineId> --data <json>
ghl pipelines delete <pipelineId>

stages — Pipeline stages

ghl stages list [--pipeline-id <id>]
ghl stages get <stageId>
ghl stages create --pipeline-id --name --position [--data <json>]
ghl stages update <stageId> --data <json>
ghl stages delete <stageId>
ghl stages reorder --pipeline-id <id> --order <id1,id2,...>

invoices — Invoice management

ghl invoices list [--limit <n>] [--offset <n>] [--status <s>]
ghl invoices get <invoiceId>
ghl invoices create --data <json>
ghl invoices send <invoiceId> --user-id <id> [--action email|sms]
ghl invoices void <invoiceId>

estimates — Estimates

ghl estimates list
ghl estimates get <estimateId>
ghl estimates create --data <json>
ghl estimates update <estimateId> --data <json>
ghl estimates delete <estimateId>
ghl estimates send <estimateId> [--data <json>]

proposals — Proposal documents and templates

ghl proposals documents list [--limit <n>] [--skip <n>]
ghl proposals documents send --data <json> (needs locationId, documentId, sentBy)
ghl proposals templates list
ghl proposals templates send --data <json> (needs templateId, userId, locationId, contactId)

payments — Orders, transactions, subscriptions, coupons

ghl payments orders list
ghl payments orders get <orderId>
ghl payments transactions list
ghl payments transactions get <transactionId>
ghl payments subscriptions list
ghl payments subscriptions get <subscriptionId>
ghl payments coupons list
ghl payments coupons create --data <json> (needs altId, altType, name, code, discountType, discountValue, startDate)
ghl payments coupons update --data <json> (same fields plus id)
ghl payments coupons delete --data <json> (needs altId, altType, id)

coupons — Unified coupon access

ghl coupons list [--limit <n>]
ghl coupons get <couponId>
ghl coupons create --data <json>
ghl coupons update <couponId> --data <json>
ghl coupons delete <couponId>

links — Tracking links

ghl links list
ghl links get <linkId>
ghl links search [--query <q>] [--skip <n>] [--limit <n>]
ghl links create --name --redirect-to [--data <json>]
ghl links update <linkId> --name --redirect-to [--data <json>]
ghl links delete <linkId>

memberships — Membership products and orders

ghl memberships list
ghl memberships get <membershipId>
ghl memberships create --name --data <json>
ghl memberships update <membershipId> --data <json>
ghl memberships delete <membershipId>
ghl memberships orders list <membershipId>

Marketing

blogs — Blog posts and metadata

ghl blogs posts list --blog-id <id> [--limit <n>] [--offset <n>]
ghl blogs posts create --data <json>
ghl blogs posts update <postId> --data <json>
ghl blogs authors list
ghl blogs categories list
ghl blogs sites list

products — Product catalog with prices and collections

ghl products list [--limit <n>] [--offset <n>]
ghl products get <productId>
ghl products create --name --product-type [--data <json>]
ghl products update <productId> --data <json>
ghl products delete <productId>
ghl products prices list <productId>
ghl products prices create <productId> --name --type --currency --amount [--data <json>]
ghl products collections list

products-extra — Inventory and product orders

ghl products inventory list [--product-id <id>]
ghl products inventory update --product-id <id> --quantity <n>
ghl products orders list [--product-id <id>]
ghl products orders get <orderId>
ghl products orders create --data <json>
ghl products orders update <orderId> --data <json>
ghl products orders delete <orderId>
ghl products orders refund <orderId> [--data <json>]

social — Social media accounts and posts

ghl social accounts [--limit <n>]
ghl social posts list [--limit <n>]
ghl social posts get <postId>
ghl social posts create --data <json>
ghl social posts update <postId> --data <json>
ghl social posts delete <postId>

social-media-posting — Social posting (internal)

ghl social-media-posting accounts list
ghl social-media-posting posts list

ad-manager — Ad campaigns

ghl ad-manager ads list

affiliate-manager — Affiliate management

ghl affiliate-manager affiliates list
ghl affiliate-manager membership-offers list

campaigns — Email campaigns (read-only)

ghl campaigns list [--status <s>]

Automation

workflows — Workflow automation (full CRUD + publish + clone)

ghl workflows list [--limit <n>] [--offset <n>]
ghl workflows get <id> [--json]
ghl workflows create <name> [--trigger <type>] [--action <type>] [--data <json>] [--dry-run] [--plan]
ghl workflows update <id> --data <json> [--dry-run]
ghl workflows publish <id>
ghl workflows clone <id> --name <name>

funnels — Funnel pages and redirects

ghl funnels list [--type <t>] [--category <c>]
ghl funnels pages list <funnelId> --limit <n> --offset <n>
ghl funnels pages count <funnelId>
ghl funnels pages create <funnelId> --name <name> [--dry-run]
ghl funnels pages update <funnelId> <pageId> --name <name> [--dry-run]
ghl funnels pages delete <funnelId> <pageId> [--dry-run]
ghl funnels redirects list <funnelId>
ghl funnels redirects create <funnelId> --domain --path --target --action
ghl funnels redirects update <funnelId> <redirectId> --target --action
ghl funnels redirects delete <funnelId> <redirectId>

builders — Composite asset builders

ghl build workflow <name> [--trigger <type>] [--action <type>] [--data <json>] [--plan] [--dry-run]
ghl build funnel <name> [--pages <n>] [--page-names <csv>] [--data <json>] [--plan] [--dry-run]
ghl build pipeline <name> [--stages <n>] [--stage-names <csv>] [--data <json>] [--plan] [--dry-run]

snapshots — Snapshot management (agency-level)

ghl snapshots list --company-id <id>
ghl snapshots share --snapshot-id --share-type --company-id [--data <json>]
ghl snapshots status <snapshotId>
ghl snapshots status-for-location <snapshotId> <locationId>

trigger-links — Trigger links

ghl trigger-links list

Internal & Admin

users — User management

ghl users list [--location-id <id>]
ghl users get <userId>
ghl users create --data <json> (needs companyId, firstName, lastName, email, password, type, role, locationIds)
ghl users delete <userId>

media — Media library

ghl media list --sort-by <field> --sort-order asc|desc --type file|folder [--limit <n>]
ghl media delete <id>

objects — Custom objects (schemas + records)

ghl objects schemas list
ghl objects schemas get <key>
ghl objects records search --schema-key <key> [--limit <n>] [--data <json>]
ghl objects records get <schemaKey> <recordId>
ghl objects records create <schemaKey> --data <json>
ghl objects records delete <schemaKey> <recordId>

webhooks — Webhook management

ghl webhooks list
ghl webhooks get <webhookId>
ghl webhooks create --url --events <csv> [--data <json>]
ghl webhooks update <webhookId> --data <json>
ghl webhooks delete <webhookId>

phone-system — Phone system (internal)

ghl phone-system numbers list
ghl phone-system voice-token
ghl phone-system whatsapp subscription

phones — Phone numbers

ghl phones list [--limit <n>]
ghl phones get <phoneId>

voice-ai — Voice AI agents and sessions

ghl voice-ai agents list
ghl voice-ai copilot sessions list
ghl voice-ai ai-plan

conversation-ai — Conversation AI providers and actions

ghl conversation-ai providers list
ghl conversation-ai actions list

saas-api — SaaS billing and conversation AI billing

ghl saas-api billing config
ghl saas-api conversation-ai billing

marketplace — Marketplace scripts and products

ghl marketplace scripts list
ghl marketplace products list

brand-boards — Brand boards

ghl brand-boards list

knowledge-base — Knowledge base articles

ghl knowledge-base list

reports — Reporting endpoints

ghl reports list [--type <reportType>] [--start-date <date>] [--end-date <date>]
ghl reports get <reportId>
ghl reports contacts [--start-date <date>] [--end-date <date>]
ghl reports opportunities [--start-date <date>] [--end-date <date>]
ghl reports revenue [--start-date <date>] [--end-date <date>]
ghl reports campaigns [--start-date <date>] [--end-date <date>]
ghl reports conversations [--start-date <date>] [--end-date <date>]

settings — Account settings

ghl settings get
ghl settings update --data <json>
ghl settings payment-methods list
ghl settings integrations list
ghl settings email list
ghl settings sms list
ghl settings notifications list

account-health — Account health check

ghl account-health [--location <id>]

smart-lists — Smart list management

ghl smart-lists list [--limit <n>]
ghl smart-lists get <smartListId>
ghl smart-lists create --name --data <json>
ghl smart-lists update <smartListId> --data <json>
ghl smart-lists delete <smartListId>
ghl smart-lists contacts create <smartListId> --contact-id <id>
ghl smart-lists contacts get <smartListId> <contactId>
ghl smart-lists contacts delete <smartListId> <contactId>

documents — Document management

ghl documents list [--limit <n>]
ghl documents get <documentId>
ghl documents create --data <json>
ghl documents update <documentId> --data <json>
ghl documents delete <documentId>
ghl documents send <documentId> --data <json>

tasks — Task management

ghl tasks list [--contact-id <id>] [--limit <n>]
ghl tasks get <taskId>
ghl tasks create --contact-id --title --due-date [--data <json>]
ghl tasks update <taskId> --data <json>
ghl tasks delete <taskId>

Tools & Utilities

auth — Authentication

ghl auth listen # Pair with Chrome extension over loopback
ghl auth import --stdin # Read a captured session as JSON from stdin

setup — Setup and status

ghl setup wizard # Interactive setup wizard
ghl setup list # Setup status

doctor — Diagnostics

ghl doctor [--location <id>] [--json]

route — Natural language command router

ghl route "list all contacts in California"

browser — Browser automation (via Chrome extension)

ghl browser login # Start browser session
ghl browser status # Check browser status
ghl browser close # Close browser session
ghl browser task <url> # Navigate and extract
ghl browser goto <url> # Navigate to URL
ghl browser screenshot # Take screenshot
ghl browser eval <js> # Execute JavaScript

skills — Agent skills marketplace

ghl skills list [--limit <n>]
ghl skills get <skillId>
ghl skills search <query>
ghl skills validate <skillId>

learning — Self-learning layer

ghl learning stats
ghl learning health
ghl learning routes
ghl learning patterns
ghl learning suggest <command>
ghl learning queue
ghl learning feedback

accounts — Account management

ghl accounts export [--location <id>] [--output <path>]
ghl accounts diff --location-a <id> --location-b <id>
ghl accounts audit [--location <id>]

locations — Location management

ghl locations register --location-id <id> --api-key pit-... [--name <name>] [--company-id <id>]
ghl locations list [--json]
ghl locations switch <locationId>

Global Flags

--json Machine-readable JSON output
--quiet Suppress progress notes
--location <id> Override active location
--dry-run Print write requests instead of sending
--all Paginate through all pages automatically
--csv Machine-readable CSV output
--verbose Debug logging

Dev

npm test # Run test suite (598 tests)
npm run build # Compile TypeScript
npm run dev # Watch mode

Docs

License

MIT License — internal use only.