> For the complete documentation index, see [llms.txt](https://support.sayprimer.com/primer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.sayprimer.com/primer/primer-support-review/data-sources/salesforce.md).

# Salesforce

Connect Salesforce read-only; the connecting user needs the API Enabled permission.

Primer connects to Salesforce over OAuth to read your accounts, contacts and related records. The connection is **read-only** — Primer never writes back to Salesforce.

## The connecting user needs API Enabled

Salesforce only responds to Primer's API calls if the user who authorizes the connection has the **API Enabled** permission on their Salesforce profile or permission set. This is a Salesforce-side setting, not something Primer can grant.

If a connection fails or returns no data right after authorizing, the most common cause is that the connecting user's profile lacks **API Enabled**. Ask your Salesforce admin to enable it on the profile (or via a permission set), then reconnect.

## Connecting

1. Make sure the connecting user's Salesforce profile has **API Enabled**.
2. Authorize Primer from the connections screen and log in to Salesforce.
3. Approve the requested read access (`api`, `refresh_token`).

To disconnect, revoke Primer's access in Salesforce or remove the connection in Primer.

## Unmapped fields don't break the sync

Primer maps your Salesforce fields to its canonical columns automatically. If it can't resolve a particular field for a record — a custom relationship it doesn't recognize, or a value that isn't present — that column comes through **empty** for that record and the **sync keeps running**. An unmapped field costs you coverage on that column, never a failed sync, so you won't see a field-level error in Primer; you'll see the gap as missing data on the affected records. If a field you expect is consistently empty, check that it's populated and accessible in Salesforce, then rerun the sync.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://support.sayprimer.com/primer/primer-support-review/data-sources/salesforce.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
