Custom Object Management

hubspot/agent-cli-skills/custom-object-management

by hubspota8eea0880838No license27 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 7 days ago

Discover, create, update, and delete custom CRM object schemas. Use when defining a new object type, inspecting existing schemas, or removing one. Record CRUD on custom objects is identical to standard objects — see `bulk-operations`.

Instructions onlyBusiness & Finance
AI-generated overview

Manages HubSpot custom CRM object schemas: list, inspect, create, update labels, and delete via the hubspot CLI.

What it does
This skill documents how to discover, inspect, create, update, and delete custom CRM object schemas using the hubspot CLI. It covers listing schemas as JSONL, filtering to custom ones, reading a full schema definition, building a minimal create body, patching labels or descriptions, and running the destructive delete flow with dry-run, digest, and confirm. It also notes that record CRUD on custom objects matches standard objects and points to related skills.
When to use it
Use it when defining a new custom object type, inspecting existing schemas, updating schema labels or descriptions, or removing a custom object schema. It is also relevant when checking which custom objects exist before working with their records.
Requirements
Requires the hubspot CLI and jq for the shown pipelines. OAuth login or a service key is needed for list, get, create, and update; delete is service-key-only and needs HUBSPOT_ACCESS_TOKEN. No scripts ship with the skill.

Source of truth

hubspot schemas --help is authoritative. Subcommands: list, get, create, update (metadata only), delete (destructive). schemas list/get/create/update work under OAuth login or a service key; schemas delete is service-key-only (AppTokenOnly) — set HUBSPOT_ACCESS_TOKEN. Read bulk-operations/SKILL.md first — every command here uses its JSONL conventions, and schemas delete uses its dry-run / digest / confirm flow.

Discover existing schemas

bash
hubspot schemas list                                       # JSONL: name, label, singular, objectTypeId, sourcehubspot schemas list | jq 'select(.source=="custom")'      # custom onlyhubspot objects types | jq -c 'select(.source=="custom")'  # same set, also shown to confirm `--type` resolves

name is what every other command takes. objectTypeId (e.g. 2-12345678) is only needed for workflow PLATFORM_FLOW targets.

Inspect one schema

bash
hubspot schemas get --type pets

Returns the full definition — properties, associations, labels, requiredProperties, primaryDisplayProperty, fullyQualifiedName. Reshape with jq as needed (see bulk-operations/resources/json-patterns.md).

Create a schema

Build a JSON body and pipe it (or pass --file). Minimal valid body:

json
{  "name": "equipment",  "labels": {"singular": "Equipment", "plural": "Equipment"},  "primaryDisplayProperty": "equipment_name",  "requiredProperties": ["equipment_name"],  "properties": [    {"name": "equipment_name", "label": "Name", "type": "string", "fieldType": "text"}  ],  "associatedObjects": ["contacts"]}
bash
cat equipment-schema.json | hubspot schemas create --dry-run   # previewhubspot schemas create --file equipment-schema.json            # execute

Add more properties later with hubspot properties create --type <name> ....

Update schema metadata

update patches labels / description only. Property edits go through hubspot properties.

bash
echo '{"labels":{"singular":"Device","plural":"Devices"}}' | hubspot schemas update --type equipment

update also supports --dry-run → digest → re-run with --digest --confirm <name> (see bulk-operations/SKILL.md for the pattern).

Delete a schema (destructive)

Schema delete is destructive and irreversible — it permanently removes the schema and every record of that type. It is gated as MetadataDestroy: every delete requires --dry-run first, then re-run with --digest <hash> --confirm <name> within 5 minutes.

Follow the three-step flow documented in bulk-operations/SKILL.md ("Safe destructive workflow"). For schemas, the confirm value is the schema name:

bash
hubspot schemas delete --type equipment --dry-run# → digest=blast-... ; apply_command_hint shows: --digest <hash> --confirm 'equipment'hubspot schemas delete --type equipment --digest <hash> --confirm equipment

Check hubspot history --since 24h --kind MetadataDestroy to audit recent schema deletes.

Using the schema after creation

Once a schema exists, all hubspot objects ... commands accept its name as --type (e.g. --type pets). Record CRUD, search, association, bulk upsert — all identical to standard objects. Don't re-implement those flows here; see bulk-operations/SKILL.md and crm-lookup.

Source and attribution

Source:hubspot/agent-cli-skillsincustom-object-managementat commita8eea08

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal