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

# Salesforce

> Integrate your application with the Salesforce API

## 🚀 Quickstart

Connect to Salesforce with Nango and see data flow in 2 minutes.

**1. Create the integration**

In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> *Configure New Integration* -> *Salesforce*.

> [!NOTE]
>
> Nango has a [Nango-managed OAuth app](https://nango.dev/docs/guides/auth/auth-guide.md#nango-managed-oauth-apps) you can use in development and production. Select it when you create the integration.

**2. Authorize Salesforce**

Go to [Connections](https://app.nango.dev/dev/connections) -> *Add Test Connection* -> *Authorize*, then log in to Salesforce. Later, you'll let your users do the same directly from your app.

**3. Call the Salesforce API**

Let's make your first request to the Salesforce API (fetch a list of contacts). Replace the placeholders below with your [Environment API key](https://nango.dev/docs/reference/backend/http-api/api-keys.md), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):

> [tab] cURL
>
> ```bash theme={null}
> curl "https://api.nango.dev/proxy/services/data/v58.0/query?q=SELECT+Id,FirstName,LastName,Email+FROM+Contact+LIMIT+10" \
>   -H "Authorization: Bearer <NANGO-API-KEY>" \
>   -H "Provider-Config-Key: <INTEGRATION-ID>" \
>   -H "Connection-Id: <CONNECTION-ID>"
> ```

> [tab] Node
>
> Install Nango's backend SDK with `npm i @nangohq/node`. Then run:
>
> ```typescript theme={null}
> import { Nango } from '@nangohq/node';
>
> const nango = new Nango({ apiKey: '<NANGO-API-KEY>' });
>
> const res = await nango.get({
>     endpoint: '/services/data/v58.0/query',
>     params: { q: "SELECT Id,FirstName,LastName,Email FROM Contact LIMIT 10" },
>     providerConfigKey: '<INTEGRATION-ID>',
>     connectionId: '<CONNECTION-ID>'
> });
>
> console.log(res.data);
> ```

Or fetch credentials with the [Node SDK](https://nango.dev/docs/reference/backend/backend-sdk/node.md#get-a-connection-with-credentials) or [API](https://nango.dev/docs/reference/backend/http-api/connections/get.md).

✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

**4. Implement Nango in your app**

Follow our [Auth implementation guide](https://nango.dev/docs/guides/primitives/auth.md) to integrate Nango in your app.

To use your own OAuth app instead of the Nango-managed one, follow the setup guide linked below.

## 📚 Salesforce Integration Guides

Nango maintained guides for common use cases.

* [How do I link my account?](https://nango.dev/docs/api-integrations/salesforce/connect)\
  Connect your Salesforce account
* [How to register your own Salesforce OAuth app](https://nango.dev/docs/api-integrations/salesforce/salesforce-api-oauth-app-setup)\
  Register an OAuth app with Salesforce and obtain credentials to connect it to Nango
* [How to set up webhooks with Salesforce on Nango](https://nango.dev/docs/api-integrations/salesforce/webhooks)\
  Send record changes from an Apex trigger to Nango and verify them

Official docs: [Salesforce API docs](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)

## 🧩 Pre-built syncs & tools for Salesforce

Explore Nango-provided tools in your dashboard. Extend and customize them to fit your needs.

### Others

| Function name | Description | Type |
| - | - | - |
| `composite-batch-request` | Execute multiple independent Salesforce REST subrequests in one batch call | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `composite-graph-request` | Execute a dependent graph of subrequests in one composite graph call. Supports up to 500 subrequests across multiple graphs with automatic rollback on failure. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `composite-request` | Execute multiple Salesforce REST subrequests in one composite call. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-record` | Create a Salesforce sObject record for a specified object type. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-sobject-collection` | Create multiple sObject records in one collection request. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-record` | Delete a Salesforce sObject record by type and record ID. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-sobject-collection` | Delete multiple records in one sObject collection request. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `describe-global` | List available sObject types and global metadata for the org. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `describe-sobject` | Retrieve schema metadata for a specific sObject type | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-current-user` | Retrieve the current Salesforce user and org identity context. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-limits` | Retrieve current org API usage and platform limits | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-quick-action-defaults` | Retrieve default field values for a quick action | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-record-by-external-id` | Retrieve a record by external ID field and value. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-record` | Retrieve a Salesforce record by object type and record ID | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-sobject-basic-info` | Retrieve basic metadata for a specific sObject type including object properties, recent items, and URIs for related resources. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-available-resources` | Discover supported Salesforce REST resource versions and root URLs. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-quick-actions` | List quick actions available in the org or on an sObject | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-recent-items` | List recently viewed records visible to the authenticated user | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `parameterized-search-records` | Run a parameterized search request across Salesforce objects. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `query-all-records` | Run a SOQL query that also includes deleted and archived records. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `query-records` | Run a SOQL query and return matching records | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `retrieve-query-more` | Continue a SOQL query using a nextRecordsUrl locator | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `search-records` | Run a SOSL search across searchable Salesforce objects | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-record-by-external-id` | Update a record by external ID field and value. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-record` | Partially update a Salesforce record by object type and record ID. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-sobject-collection` | Update multiple records in one sObject collection request | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `upsert-record` | Create or update a Salesforce record using an external ID field. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `upsert-sobject-collection` | Upsert multiple records using external IDs in one collection request | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `accounts` | Sync Salesforce Account records with a practical default field set | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `articles` | Sync Salesforce knowledge articles with title, content, and modified timestamps | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `cases` | Sync Salesforce Case records with common service and status fields. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `contacts` | Sync Salesforce Contact records with a practical default field set | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `opportunities` | Sync Salesforce Opportunity records with amount, stage, close date, and owner fields. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `records-by-soql` | Sync arbitrary Salesforce records from a caller-provided SOQL query | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `tickets` | Sync Salesforce case tickets with core fields and related conversation context. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `users` | Sync Salesforce User records with profile, email, and active state fields. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.