> ## 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.

# Outreach

> Permissions Salesfinity needs in Outreach, what it imports, what it writes back, and how to configure call purposes and dispositions.

The Outreach integration imports prospects from a sequence or from your due call tasks, and logs
every dialed call back to Outreach as a call on the prospect, completing the task and advancing
the sequence step. Connect it from **Settings → Connections & API → Outreach**.

## Permissions required to connect

Salesfinity authorizes with Outreach through OAuth. When you connect, Outreach asks you to approve
these scopes:

| Scope                                                          | Why Salesfinity needs it                                                                                                            |
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `prospects.read`, `prospects.write`                            | Import prospects, match a dialed contact, create a prospect when logging a call to someone new, and pause or resume their sequence. |
| `tasks.read`, `tasks.write`, `taskPriorities.read`             | Import your due call tasks and mark them complete when the call is logged.                                                          |
| `calls.read`, `calls.write`                                    | Create the call record for every dialed call and read past call activity.                                                           |
| `callDispositions.read`                                        | List call dispositions for the disposition mapping.                                                                                 |
| `callPurposes.read`, `callPurposes.write`, `callPurposes.all`  | List call purposes and attach the chosen purpose to each logged call.                                                               |
| `sequences.read`, `sequenceSteps.read`, `sequenceStates.write` | List sequences to import from, read the step a task belongs to, and add or remove prospects in sequences.                           |
| `stages.read`                                                  | Read prospect stages for the contact card.                                                                                          |
| `accounts.read`, `accounts.write`                              | Read the prospect's account and its fields.                                                                                         |
| `phoneNumbers.read`, `phoneNumbers.write`                      | Read prospect phone numbers, drop numbers Outreach has flagged invalid, and sync enriched numbers back.                             |
| `users.read`, `teams.read`                                     | Attribute calls and tasks to the connected user.                                                                                    |
| `mailboxes.read`, `mailings.read`, `mailings.write`            | Show the prospect's email history on the contact card.                                                                              |

The connecting user needs an Outreach profile that allows API access. Outreach admins can
restrict which apps a role may authorize; if the connect page fails before reaching Outreach's
consent screen, ask your Outreach admin to allow Salesfinity.

## What Salesfinity imports

* **A sequence.** Pick a sequence and Salesfinity imports the prospects in it. The Salesfinity list
  is named after the sequence.
* **All tasks.** Import with no sequence selected and Salesfinity pulls your incomplete call tasks
  that are due today or later, together with the prospect, sequence, and sequence step each task
  belongs to. The list is named "All tasks".

Before the import finishes, Salesfinity fetches the phone numbers your Outreach org has marked
**invalid** and removes them from the imported contacts, so you do not dial numbers Outreach
already knows are dead.

Every imported contact keeps its Outreach prospect ID and, when it came from a task, the task ID
and sequence step. Those are what let the call complete the right task later.

## What Salesfinity writes back

When you log a call on an Outreach-sourced contact, Salesfinity creates a **call** in Outreach on
the prospect:

| Call attribute            | Value                                                                  |
| ------------------------- | ---------------------------------------------------------------------- |
| Direction                 | Outbound                                                               |
| Outcome                   | Completed                                                              |
| Note                      | Your call notes                                                        |
| Answered at, completed at | The call's start and end time                                          |
| To, from                  | The number reached and the number dialed from                          |
| Recording URL             | A link to the recording, when the call was recorded                    |
| Sequence action           | The step action the task belonged to, so the sequence advances         |
| Tags                      | "Salesfinity"                                                          |
| Disposition               | The Outreach call disposition mapped from your Salesfinity disposition |
| Call purpose              | The purpose chosen when logging, or your default call purpose          |
| Task                      | The imported task, marked complete when you finished the call          |

If the task no longer exists in Outreach, for example because the sequence was edited after
import, the call is logged without the task link rather than failing.

When the call was recorded, Salesfinity also submits the recording to **Kaia** so Outreach can
transcribe and analyze it. This runs after the call is logged and does not block it.

Two more write paths run outside of call logging:

* **Contacts you dial from a CSV or custom list** with Outreach as their sequencer are matched by
  email; if nobody matches, a prospect is created before the call is logged.
* **Phone numbers** found by enrichment or edited in the dialer can be written back to the
  prospect.

## Sequences

From the dialer's sequence controls you can **add** a prospect to a sequence, **remove** them,
and **move** them to another sequence. Sequence membership also drives the contact card, which
shows the prospect's current sequence, step, and stage.

## Configuration

<AccordionGroup>
  <Accordion title="Default call purpose">
    The Outreach call purpose attached to every logged call unless you pick a different one while
    logging. Set this first; Outreach requires a purpose on calls in many orgs.
  </Accordion>

  <Accordion title="Disposition mapping">
    Maps each Salesfinity disposition to an Outreach call disposition. The automatic suggestion
    fills the table from your org's disposition names, and you can adjust it.
  </Accordion>

  <Accordion title="Contact field mapping">
    Which Outreach prospect field fills each Salesfinity contact field.
  </Accordion>

  <Accordion title="Custom fields">
    Extra prospect and account fields to bring across onto the contact in the dialer.
  </Accordion>
</AccordionGroup>

## Sessions and reconnecting

Outreach issues short-lived access tokens with a refresh token. Salesfinity refreshes the token
automatically the moment it expires, both when you use the dialer and when the AI Companion or a
routine calls Outreach in the background. If the refresh is rejected, usually because the token
was revoked in Outreach, the integration reads as disconnected and you reconnect from the
settings card.

## Related

<CardGroup cols={2}>
  <Card title="How data moves" icon="arrows-rotate" href="/integrations/data-flow">
    Where a call goes after you log it, and what each sync state means.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/integrations/troubleshooting">
    Reconnect prompts, empty imports, and failed syncs.
  </Card>
</CardGroup>
