Skill Tracer
Skills › Knowledge Work Plugins › crm-autopilot › hubspot-fields.md

hubspot-fields.md

62 lines · small-business/skills/crm-autopilot/reference/hubspot-fields.md at 2574e29

Open on GitHub
1# HubSpot fields and activity types
2
3The specific HubSpot objects, properties, and activity types the `crm-autopilot` skill reads from and writes to. Only the fields listed here are in-scope for this skill — everything else in HubSpot is untouched.
4

HubSpot fields and activity types

The specific HubSpot objects, properties, and activity types the crm-autopilot skill reads from and writes to. Only the fields listed here are in-scope for this skill — everything else in HubSpot is untouched.

Raw lines 1 to 4
5## Contacts — write
6
7| Field | Usage |
8|---------------|----------------------------------------------------------------------------------------|
9| `email` | Primary identifier for lookup + dedupe. Always set on creation. |
10| `firstname` | Set from email signature or calendar invite if available. Leave blank if unknown. |
11| `lastname` | Set from email signature or calendar invite if available. Leave blank if unknown. |
12| `company` | Set from email signature domain or calendar organization if available. |
14Do not write any other contact properties. Owner, lifecycle stage, and lead source are user-managed fields — never overwrite.

Contacts — write

FieldUsage
emailPrimary identifier for lookup + dedupe. Always set on creation.
firstnameSet from email signature or calendar invite if available. Leave blank if unknown.
lastnameSet from email signature or calendar invite if available. Leave blank if unknown.
companySet from email signature domain or calendar organization if available.

Do not write any other contact properties. Owner, lifecycle stage, and lead source are user-managed fields — never overwrite.

Raw lines 5 to 15
16## Contacts — read (for lookup)
18| Field | Usage |
19|---------------|--------------------------------------------------------------------|
20| `email` | Search key. Case-insensitive exact match. |
21| `firstname` · `lastname` · `company` | Displayed to the user during ambiguity resolution. |
22| `hs_object_id`| Used for association with deals and activities. |

Contacts — read (for lookup)

FieldUsage
emailSearch key. Case-insensitive exact match.
firstname · lastname · companyDisplayed to the user during ambiguity resolution.
hs_object_idUsed for association with deals and activities.
Raw lines 16 to 23
24## Deals — read (all cleanup + resolution paths)
26| Field | Usage |
27|-----------------------------|----------------------------------------------------------|
28| `dealname` | Displayed to the user; used for fuzzy match against email/meeting topic |
29| `dealstage` | Read-only during cleanup — flag discrepancies, never change |
30| `amount` | Read during cleanup; flag if recent email/meeting implies change |
31| `closedate` | Read during cleanup; flag if outdated |
32| `hs_next_step` | Read + propose updates during cleanup |
33| `hubspot_owner_id` | Displayed to the user; never changed |
34| `notes_last_updated` | Used to detect stale deals. This is HubSpot's "Last Activity Date" on the deal object. There is no `hs_lastactivitydate` property — do not look for one |
35| Associated contacts | Used to determine whether recent email/meeting participants are on the deal |

Deals — read (all cleanup + resolution paths)

FieldUsage
dealnameDisplayed to the user; used for fuzzy match against email/meeting topic
dealstageRead-only during cleanup — flag discrepancies, never change
amountRead during cleanup; flag if recent email/meeting implies change
closedateRead during cleanup; flag if outdated
hs_next_stepRead + propose updates during cleanup
hubspot_owner_idDisplayed to the user; never changed
notes_last_updatedUsed to detect stale deals. This is HubSpot's "Last Activity Date" on the deal object. There is no hs_lastactivitydate property — do not look for one
Associated contactsUsed to determine whether recent email/meeting participants are on the deal
Raw lines 24 to 36
37## Deals — write (cleanup path only, with approval)
39| Field | Rule |
40|-----------------|------------------------------------------------------------------|
41| `hs_next_step` | Propose updates; write only with explicit user approval |
42| `closedate` | Propose updates; write only with explicit user approval |
43| `amount` | Propose updates; write only with explicit user approval |
44| Contact assoc. | Propose adding missing deal participants; write only with approval |
46**Never write** `dealstage`, `pipeline`, `hubspot_owner_id`, or any custom property during cleanup. Those are owner-managed.

Deals — write (cleanup path only, with approval)

FieldRule
hs_next_stepPropose updates; write only with explicit user approval
closedatePropose updates; write only with explicit user approval
amountPropose updates; write only with explicit user approval
Contact assoc.Propose adding missing deal participants; write only with approval

Never write dealstage, pipeline, hubspot_owner_id, or any custom property during cleanup. Those are owner-managed.

Raw lines 37 to 47
48## Activities — write
50| Activity type | Used by | Fields set |
51|--------------------------------|----------------|--------------------------------------------------------------------------|
52| Email engagement (`EMAIL`) | Email path | `hs_email_subject` (thread subject), `hs_email_text` (summary, not full thread), `hs_timestamp` (latest message time), associated contact(s) + deal |
53| Call engagement (`CALL`) | Call path | `hs_call_title` (event title), `hs_call_body` (summary), `hs_call_duration` (from calendar), `hs_timestamp` (event start), associated contact(s) + deal |
54| Note (`NOTE`) | Cleanup path | `hs_note_body` (when flagging something for future review that doesn't fit a field update) |
56Use HubSpot's standard engagement vocabulary. Do not invent custom activity types.

Activities — write

Activity typeUsed byFields set
Email engagement (EMAIL)Email pathhs_email_subject (thread subject), hs_email_text (summary, not full thread), hs_timestamp (latest message time), associated contact(s) + deal
Call engagement (CALL)Call pathhs_call_title (event title), hs_call_body (summary), hs_call_duration (from calendar), hs_timestamp (event start), associated contact(s) + deal
Note (NOTE)Cleanup pathhs_note_body (when flagging something for future review that doesn't fit a field update)

Use HubSpot's standard engagement vocabulary. Do not invent custom activity types.

Raw lines 48 to 57
58## Association rules
60- Every activity must associate to the deal AND to at least one contact.
61- If a contact is created on-the-fly during activity logging, associate it to the deal in the same operation so the activity shows up on both the contact and deal timelines.
62- Do not associate a contact to a deal during an activity-logging flow unless the contact is actually a participant in that email thread or meeting.

Association rules

  • Every activity must associate to the deal AND to at least one contact.
  • If a contact is created on-the-fly during activity logging, associate it to the deal in the same operation so the activity shows up on both the contact and deal timelines.
  • Do not associate a contact to a deal during an activity-logging flow unless the contact is actually a participant in that email thread or meeting.
Raw lines 58 to 62