> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Check Who Is Already in Your CRM

> Match every row on a list against HubSpot or Salesforce, then bring the owner, last activity, open deals, and any CRM field alongside so nobody calls an account a teammate owns.

**You will end up with:** a CRM Match column on the table, plus any CRM columns you asked for,
such as owner or last activity, filled per row from your real CRM.

**Before you start:** HubSpot or Salesforce connected. Matching and CRM columns are free.

## Steps

<Steps>
  <Step title="Match the list">
    ```text theme={null}
    Check which of these are already in HubSpot.
    ```

    The companion matches every row and fills the CRM Match column. For contacts it tries
    LinkedIn URL, email, name at the company, and email domain, in that order. For accounts it
    matches on website. Name the CRM when you have two connected; otherwise both are searched
    and a fault in one can muddy the answer from the other.
  </Step>

  <Step title="Read the result honestly">
    A row can be matched, not found, or **could not verify**. The last one means a lookup failed,
    for example a rate limit, and is labeled with the reason. Salesfinity never reads a failed
    lookup as "not in the CRM".

    ```text theme={null}
    Retry the ones that couldn't be verified.
    ```
  </Step>

  <Step title="Bring the CRM context alongside">
    Any table with CRM matches can carry CRM columns. These are read per row and are free.

    ```text theme={null}
    Add the HubSpot owner, last activity, and open deals for each account.
    ```

    Available account columns: owner, last activity, next activity, pipeline, deal stage, open
    deals, loss reason, tasks, recent engagement, and notes. Contact columns: match, owner,
    engagement, and an email summary.
  </Step>

  <Step title="Pull a specific CRM field">
    Any standard or custom property in your CRM can become a column. Say the field in your own
    words and the companion finds the matching property in your portal's schema.

    ```text theme={null}
    Add a column with the "main competitor" field from Salesforce.
    ```

    If the property does not exist, the companion says so rather than inventing one.
  </Step>

  <Step title="Act on the split">
    ```text theme={null}
    Remove the ones owned by someone else on the team, and keep the rest.
    ```

    ```text theme={null}
    Show me only the accounts not in the CRM.
    ```
  </Step>
</Steps>

## What happens behind the scenes

Matching runs against the CRM's own search, one row at a time, with the lookups that fail
recorded separately from the lookups that found nothing. That distinction is what lets the
companion say "could not verify" instead of "not there". CRM columns come from the record's
associations and properties, so what you see is exactly what is in the portal at that moment.

## Prompts to try

```text theme={null}
Are any of these people already in Salesforce? Name the owner if so.
```

```text theme={null}
Which of these accounts have an open deal, and at what stage?
```

```text theme={null}
Add "renewal date" and "contract value" from HubSpot to each row.
```

```text theme={null}
Which of these contacts have we emailed in the last 90 days?
```

## Next

<CardGroup cols={2}>
  <Card title="Re-engage closed-lost accounts" icon="rotate-left" href="/tutorials/reengage-closed-lost">
    Start from the CRM instead of matching to it.
  </Card>

  <Card title="Integrations: how data moves" icon="arrows-rotate" href="/integrations/data-flow">
    What happens after you dial a CRM-matched contact.
  </Card>
</CardGroup>
