team-ownership

Assign and reassign CRM record ownership, audit who-owns-what across object types, and handle rep transitions. Built on `bulk-operations`.

By hubspot · 1,297 installs

npx skills add hubspot/agent-cli-skills --skill team-ownership

Source repository · Upstream listing

Prereq: read bulk operations/SKILL.md first. JSONL piping, pagination, dry run/digest/confirm, and hubspot history recovery live there. Reshape patterns live in bulk operations/resources/json patterns.md . hubspot owner id is a string field on contacts , companies , deals , and tickets . Owners are CRM users — hubspot owners list returns them; there is no teams object, so team level views are client side groupings by hubspot owner id . 1. Resolve email → owner ID Never hardcode IDs — they are portal specific. Resolve, then cache: 2. Find records for an owner Same filter across all four object types. Add object specific properties for context. Unowned records use the !property form. 100 hits — page with the after loop from bulk operations . Counting only: pipe to wc l . 3. Bulk reassign — search → update Reshape each search row into {id, properties:{hubspot owner id}} and pipe to objects update . Always dry run first; for 100 rows the dry run emits a digest + apply command hint — re run with digest / confirm (see bulk operations/SKILL.md § "Safe destructive workflow"). Single record assignment — no stdin, no jq: 4. Rep leaves workflow Loop over the four object types the rep touches: Review each digest line, then re run without dry run (adding digest / confirm per type when escalated). Mis reassigned? hubspot history since 1h lists the affected IDs. 5. Team level views (client side grouping) Group records by hubspot owner id , join to owners list for human readable emails: