# CRM Agents



<Steps>
  <Step title="Connect the CRM">
    Connect HubSpot, Salesforce or Zoho. The agent uses that connection to find,
    create, update and associate records, so connect it with access that matches
    what you want it to touch.
  </Step>

  <Step title="Define the instructions">
    What the agent may do every time it reaches a record: create records that do
    not exist yet, update existing ones in place, de-duplicate (by work email,
    then company domain), write enrichment fields such as industry, size and
    funding, and sync the lead score back to the CRM.
  </Step>

  <Step title="Test and visualise">
    Run it against a sample record and read the writes it would make before it
    runs for real.
  </Step>
</Steps>

## What the Test Shows [#what-the-test-shows]

Every field the agent would touch, with the current CRM value, the value it
would write, and a label for the kind of write:

| Label        | Means                                                       |
| ------------ | ----------------------------------------------------------- |
| **Created**  | The CRM had nothing there                                   |
| **Enriched** | Surface knows something the CRM does not                    |
| **Updated**  | Both held a value, and the agent would write over the CRM's |

Read the Updated rows first. They are the only ones that can write over
something a person entered by hand.

## Deciding What to Turn On [#deciding-what-to-turn-on]

**Start with the blanks.** Filling empty fields and correcting non-empty ones
are different levels of risk. Creation and enrichment before updates.

**Scope the objects.** Contacts and companies are lower stakes than deals. A
deal field is a field your forecast runs on.

**Name the fields.** An agent pointed at everything churns fields nobody reads.

**Re-test after every change.** A bad instruction running across the whole
database is expensive to undo.

<Warning>
  Turn writes on for one object at a time and watch it for a week. A CRM agent
  misconfigured on lifecycle stage can re-stage thousands of records quietly, and
  undoing it is a data project.
</Warning>

## What It Carries [#what-it-carries]

Into the CRM: the identity and firmographics Surface holds on the lead, the
enrichment fields you allowed, the
[lead score](/platform/lead-agents/scoring), and the contact, company, deal and
lifecycle-stage records themselves.

For data in the other direction, the
[HubSpot MCP tools](/mcp-server/tools#hubspot) are read-only lookups
against a connected HubSpot account: companies, contacts, open deals, owners,
pipelines and recent activity. See [Lead Data Layer](/platform/leads).

Related: [HubSpot](/platform/integrations/hubspot) ·
[Salesforce](/platform/integrations/salesforce) ·
[HubSpot MCP lookups](/mcp-server/tools#hubspot)
