---
name: crm
description: CRM and record management with Unify, read Salesforce/HubSpot (owners, stages, deals, custom fields, "what's in my CRM"), write CRM records, upsert companies/people into Unify, and export to Lists. Use when the user asks about CRM data, wants records saved or updated, or wants a result set exported to a List or their CRM.
---

# CRM and records

CRM briefs go through `run_agent` (see `agent-runs`). Unify connects to Salesforce
and HubSpot and also keeps its own canonical company/person records and Lists.

> **Deterministic alternative.** If the user wants exact, repeatable reads/writes
> of their **Unify objects and records** — not a natural-language task — the
> public API exposes direct tools: `list_objects` / `get_object` and their
> attributes, `get_object_record` / `create_object_record` / `update_object_record`
> / `upsert_object_record` / `find_unique_object_record` / `delete_object_record`,
> and the async **Bulk API** tools for exporting or syncing many records at once.
> The agent briefs below remain the path for complex workflows and anything
> needing reasoning.

## Reads (free, live)

If the workspace has a connected CRM, briefs like these work directly:

- "Which of these accounts exist in our Salesforce, and who owns them?"
- "Open opportunities past stage 2 closing this quarter."
- "What picklist values does the deal-stage field have?"
- Joins with Unify signals are free too: "CRM accounts with website intent this
  month that have no open opportunity."

## Writes

CRM writes are available on Unify's Business plan and behave as
search-then-create-or-update (matching by domain, email, or record ID; the agent
handles dedupe). Rules:

- Log activities too: "log this call/email against the contact in HubSpot."

## Unify records and Lists

- **Save to Unify**: "save these companies/people as Unify records." Companies
  need a domain; people need an email. The agent previews EXISTING/NEW/INVALID
  classifications before committing.
- **Lists**: named, saved collections in the Unify app. "Export this DataTable to
  a List called Q3 targets" (the export previews counts: new, already in list,
  duplicates, invalid) before committing. Say whether creating brand-new records
  is allowed or the export should only link existing ones.
- **Personas**: tenant-level title sets. "Update our 'economic buyer' persona to
  include VP Finance titles" is a valid brief; edits are versioned and reversible.
