> For the complete documentation index, see [llms.txt](https://help.peoplevine.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.peoplevine.com/products/integrations-overview/setup-salesforce.md).

# How to Set Up Salesforce

### Before you begin (Prerequisites)

* **Permissions**: You must be an **Administrator** or **Supervisor**. See: [How to Manage Users and Permissions](/products/control-panel-overview/admin-overview/manage-roles-permissions.md).
* **Salesforce account** with permission to create Connected Apps (Setup > App Manager).
* **Salesforce Connected App** configured with OAuth enabled and the Peoplevine callback URL. See the Connect guide for Salesforce-side setup.
* **Consumer Key** and **Consumer Secret** from the Salesforce Connected App settings.

> For full setup instructions including Salesforce-side configuration (Connected App creation, OAuth scopes, webhook body mapping with dynamic variables), see [Connect Salesforce and Peoplevine](https://docs.peoplevine.com/peoplevine-docs/peoplevine-connect) in Peoplevine Connect. The steps below cover the Peoplevine Control Panel side.

### Instructions

1. Navigate to [**AUTOMATE > Integrated Platforms**](https://control.peoplevine.com/admin_authenticate.aspx).

> **Note (Pro Dash):** Same path — **AUTOMATE > Integrated Platforms**.

2. Scroll to find the **Salesforce** logo and select it.
3. Enter the **Consumer Key** and **Consumer Secret** from your Salesforce Connected App.
4. Click **CONNECT**.
5. You will be prompted to enter your Salesforce credentials to complete OAuth authentication.
6. If authentication is successful, a confirmation alert appears at the top of the screen.

#### Set Up Webhooks to Push Data to Salesforce

7. Navigate to **AUTOMATE > Webhooks**.
8. Click **SETUP NEW WEBHOOK**.
9. Select the activity trigger (e.g., Customer Registers, New Membership).
10. Enter the Salesforce instance URL for the target object (e.g., `https://yourinstance.my.salesforce.com/services/data/v48.0/sobjects/Contact/`).
11. Select **Use your Salesforce user credentials** for authentication.
12. In the **Header** field, enter: `Authorization: Bearer {@authenticate_guid@}`
13. In the **Body** field, map Peoplevine fields to Salesforce fields using JSON. See the Connect guide for sample mappings.
14. Click **SAVE**.

### What Gets Synced

| Data                                            | Direction               | Timing                                        |
| ----------------------------------------------- | ----------------------- | --------------------------------------------- |
| Customer profiles (name, email, phone, address) | Peoplevine > Salesforce | On webhook trigger (e.g., Customer Registers) |
| Membership data (tier, rate, billing address)   | Peoplevine > Salesforce | On webhook trigger (e.g., New Membership)     |
| Custom fields via dynamic variable mapping      | Peoplevine > Salesforce | Per webhook configuration                     |

> **Note**: This integration pushes data from Peoplevine to Salesforce via webhooks. It is not a two-way sync — changes made in Salesforce do not flow back to Peoplevine.

### Best Practice

* **Use the Salesforce callback URL exactly as specified** — the Connected App must use `https://control.peoplevine.com/admin_authenticate_salesforce.aspx` as the callback URL. Any variation will break authentication.
* **Select the "Mixed" campaign use case in OAuth scopes** — ensure your Connected App includes "Access and manage your data (API)" and "Perform requests on your behalf at any time (refresh\_token, offline\_access)."
* **Test with a single webhook first** — create one webhook (e.g., Customer Registers), trigger it with a test profile, and verify the data appears in Salesforce before building additional webhooks.
* **Use dynamic variables for field formatting** — Peoplevine's templating syntax (e.g., `{@birthdate:date(yyyy-MM-dd)@}`, `{@auto_charge:boolean@}`) lets you format values to match Salesforce field requirements. See the Connect guide for syntax.

### Common Issues

**OAuth authentication fails:** Verify the Consumer Key and Consumer Secret match the values in Salesforce Setup > App Manager > your Connected App. Confirm the callback URL is exactly `https://control.peoplevine.com/admin_authenticate_salesforce.aspx`.

**Webhook data not appearing in Salesforce:** Check that the Salesforce instance URL is correct and includes the API version and object path. Verify the header includes `Authorization: Bearer {@authenticate_guid@}`. Review Salesforce required field constraints — missing required fields will cause the API call to fail silently.

**Field mapping errors:** Salesforce has specific field requirements (data types, max lengths, picklist values). Use Peoplevine's dynamic variable syntax to format values correctly. See the Connect guide for sample JSON mappings for Contact and Opportunity objects.

### What Happens Next

* When the configured trigger fires (e.g., a customer registers or a membership is created), Peoplevine pushes the mapped data to Salesforce automatically
* Each webhook operates independently — you can set up multiple webhooks for different events and Salesforce objects
* Data appears in the target Salesforce object (Contact, Opportunity, or custom object) based on your field mapping

*Last updated: 2026-05-24*


---

# 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://help.peoplevine.com/products/integrations-overview/setup-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.
