crm-lookup

Find a specific CRM record by ID, email, domain, or name fragment, and traverse associations for the full account picture.

By hubspot · 1,420 installs

npx skills add hubspot/agent-cli-skills --skill crm-lookup

Source repository · Upstream listing

Source of truth hubspot <command help is authoritative. Read [ bulk operations/SKILL.md ](../bulk operations/SKILL.md) first — it owns JSONL piping, pagination, batch get via stdin, and the safety flow for any write that comes after a lookup. This skill is read only. Pick properties from the live schema Schemas drift. Run hubspot properties list type <type for the live set. First pass properties for a brief: Object properties contacts email,firstname,lastname,company,phone,lifecyclestage,hubspot owner id companies name,domain,industry,annualrevenue,numberofemployees,hubspot owner id deals dealname,amount,dealstage,closedate,hubspot owner id,hs is closed won tickets subject,hs pipeline stage,hs ticket priority,hubspot owner id Contact ad/campaign attribution lives on hs analytics (e.g. hs analytics source , hs analytics source data 1 / 2 , hs analytics first touch converting campaign , hs analytics last touch converting campaign ). Full list: hubspot properties list type contacts grep hs analytics . 1. Lookup by ID Up to ~100 IDs in a single batch call: 2. Find one by email / domain (exact match) email / domain are exact match — normalize to lowercase. Multiple filter flags are OR'd. 3. Find by partial name (token + client side narrowing) ~ is CONTAINS TOKEN — matches whole space separated words. dealname~acme finds "Acme Renewal" but not "AcmeCorp". For substring, pipe to jq . There's no full text search across all fields — pick the property. 4. Find all associated records (two CLI calls, not xargs) Pattern: associations list → jq c '{id}' → objects get batch. Never xargs I{} hubspot objects get … — that spawns one process per record. Use plural in from ( contacts: , companies: , deals: ); help shows singular but only plural avoids a warning. 5. Get a record plus its associations Constraints Search returns ≤100 per page. For more, use the pagination loop in bulk operations/SKILL.md . ~ is token based; substring filtering happens in jq after the search. If the lookup feeds a write (update, delete, merge), follow the dry run → digest → confirm flow in bulk operations/SKILL.md .