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

# Salesforce

{% hint style="info" %}
**Need help?** If you run into any issues installing the Salesforce app, or if you'd like to request any additional functionality, contact us at [support.vomevolunteer.com](https://support.vomevolunteer.com/).
{% endhint %}

***

## Salesforce Integration Setup

The Vome Integration Dashboard connects Salesforce with Vome for contact synchronization, automation, and data exchange. This guide walks through the full setup from installation through validation.

**What you'll do in this guide**

1. **Install** the Vome managed package and enable Apex metadata deployment
2. **Configure** authentication, OAuth, field mapping, and webhooks
3. **Validate** the integration by activating flows and checking sync rules

***

### 1. Pre-Installation Checklist

Before starting, confirm you have all of the following.

#### Credentials & access

* Salesforce System Administrator access to the target org
* **API Key** - provided by Vome, which is available for admins using Vome's Ultimate plan.
* **Client ID** and **Client Secret** - generated in Salesforce *after* the package is installed. Section 5B walks you through creating the app and copying both values.

#### Salesforce areas you'll need

* Setup access
* Sites, Flows, Custom Metadata Types, Permission Sets
* Confirmed environment: **Sandbox (Test)** or **Production (Live)**

***

### 2. Install the Managed Package

1. Open the Vome managed package installation link: <https://login.salesforce.com/packaging/installPackage.apexp?p0=04tgK000000QgGX>
2. **Sandbox?** Replace `login` with `test` in the URL before opening.
3. Authenticate with your Salesforce credentials.
4. Choose **Install for All Users**, then click **Install**.
5. When prompted, approve third-party access for `api.vomevolunteer.com`.
6. Wait for installation to complete.\ <br>

   <figure><img src="https://4032889826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKj2l7GUq0WtZAMyFFgAt%2Fuploads%2FxGomZp1IfNroW3lstKf2%2Fimage.png?alt=media&#x26;token=4927def5-725f-4774-b6b3-1c3ef9ebf506" alt=""><figcaption></figcaption></figure>

\
**Sandbox vs. Production URLs**

The installation link defaults to Production (`login.salesforce.com`). For sandboxes, swap `login` → `test`:

```
https://test.salesforce.com/packaging/installPackage.apexp?p0=04tgK000000QgGX
```

***

### 3. Enable Apex Metadata Deployment

This setting lets the package dynamically write and update configuration records at runtime. Without it, the integration cannot apply dynamic configuration changes automatically.

1. Go to **Setup**.
2. In Quick Find, search for **Apex Settings**.
3. Enable **Deploy Metadata from Non-Certified Package Versions via Apex**.
4. Click **Save**.<br>

   <figure><img src="https://4032889826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKj2l7GUq0WtZAMyFFgAt%2Fuploads%2FKbNqLlWa0YjnUtue4pyn%2Fimage.png?alt=media&#x26;token=92230186-1f19-499e-9a64-271ff99eae45" alt=""><figcaption></figcaption></figure>

***

### 4. Configure the Webhook Site

A Salesforce Site is what lets Vome call back into your org.

1. Go to **Setup → Sites** and click **New Site**.
2. Enter a Site Name (e.g., `Vome Integration`) and set **Active = TRUE**. Fill in any other required info and click **Save.**
3. You will now see your newly created Site. Click on the **name of the Site**, which will bring you to the **Site Details page**.
4. Open **Public Access Settings** and grant access to the Apex class `VomeWebhookEndpoint`.

<figure><img src="https://4032889826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKj2l7GUq0WtZAMyFFgAt%2Fuploads%2Frl3sJlpHLj2W2kHze76f%2Fimage.png?alt=media&#x26;token=1657a52d-ec9a-4db8-98a7-b0e506ff8143" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note the Site's custom URL domain (e.g., `yourorg--dev.sandbox.my.salesforce-sites.com`). You'll need it for the Vome webhook endpoint in Section 10.
{% endhint %}

***

### 5. Integration Authentication

Authentication has three parts: Vome Settings, OAuth Configuration, and Field Mapping.

#### A. Vome Settings (Custom Metadata)

1. Go to **Setup → Custom Metadata Types**
2. You will see a label called **Vome Setting →** Click **Manage Records → New**
3. Enter the following values:

| Field    | Value                           |
| -------- | ------------------------------- |
| Label    | `Vome Setting (Production)`     |
| Name     | `Production`                    |
| Base URL | `https://api.vomevolunteer.com` |
| API Key  | *Found on Vome (see below)*     |

{% hint style="info" %}
To create an API key on Vome, please see [Authentication](/getting-started/publish-your-docs.md) for detailed steps.
{% endhint %}

#### B. OAuth Configuration

OAuth is what authorizes Vome to talk to your Salesforce org. There are two parts: first you create an app in Salesforce to generate the credentials, then you store those credentials in the **Vome OAuth Config** record.

**Part 1: Generate your Client ID and Client Secret in Salesforce**

{% stepper %}
{% step %}
**Create an External Client App**

Go to **Setup → External Client App Manager** and click **New External Client App**.

Enter an **External Client App Name** (e.g., `Vomewebhook`). The API Name populates automatically. Add your **Contact Email**, then set **Distribution State** to **Local**.
{% endstep %}

{% step %}
**Enable OAuth and add the callback URL**

Scroll to **OAuth Settings** and check **Enable OAuth Settings**. In the **Callback URL** box, enter exactly:

```
https://api.vomevolunteer.com/sfdc/oauth/callback
```

{% endstep %}

{% step %}
**Select the OAuth scopes**

Move each of these from **Available OAuth Scopes** to **Selected OAuth Scopes**:

* Manage user data via APIs (`api`)
* Perform requests at any time (`refresh_token`, `offline_access`)
* Access the identity URL service (`id`, `profile`, `email`, `address`, `phone`)
* Manage user data via Web browsers (`web`)
* Full access (`full`)
  {% endstep %}

{% step %}
**Save, then wait a few minutes**

Click **Save**. Salesforce takes 2 to 10 minutes to register and replicate a new OAuth app across all instances. If the credentials button isn't ready yet, wait and refresh.
{% endstep %}

{% step %}
**Open the credentials screen**

Reopen the app (**Setup → External Client App Manager →** dropdown beside your app **→ View**) and scroll to **OAuth Settings**. Under the **App Settings** header, click **Consumer Key and Secret**.

Salesforce opens a verification screen in a new tab. Enter the one-time code from your email or authenticator app and click **Verify**.
{% endstep %}

{% step %}
**Copy both values**

* **Consumer Key** is your **Client ID**
* **Consumer Secret** is your **Client Secret**

Use the **Copy** button next to each one and keep them handy for Part 2.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**Don't see External Client App Manager?** Older orgs use **App Manager** and Connected Apps instead. The flow is the same, and the fields are still called Consumer Key and Consumer Secret.
{% endhint %}

**Part 2: Store the credentials in Vome OAuth Config**

1. Go to **Setup → Custom Metadata Types**
2. You will see a label called **Vome OAuth Config →** Click **Manage Records → New**
3. Name the record `Default`.
4. Enter the following values:

| Field         | Value                                               |
| ------------- | --------------------------------------------------- |
| Client ID     | *Consumer Key from Part 1*                          |
| Client Secret | *Consumer Secret from Part 1*                       |
| Redirect URI  | `https://api.vomevolunteer.com/sfdc/oauth/callback` |
| Vome API Key  | *From Vome (see above)*                             |

{% hint style="warning" %}
The **Redirect URI** here must match the **Callback URL** you entered in Part 1 exactly, character for character. A mismatch is the most common cause of a failed OAuth connection.
{% endhint %}

#### C. Field Mapping Configuration

Field mapping controls how data flows between Salesforce and Vome. If either bundle is inactive, records may not sync correctly.

1. Go to **Setup → Custom Metadata Types**
2. You will see a label called **Fieldmap Bundle →** Click **Manage Records**.
3. Confirm both of these are **Active**:
   * `Contact Default Bundle`
   * `Account Default Bundle`

***

### 6. Activate the Sync Flow

1. Go to **Setup → Flows**.
2. Locate the flow named **Sync Contact To Vome Trigger**.
3. Open the flow (using the arrow on the right-hand side **→** Click **View Details And Versions**
4. Click **Activate**.

This enables automatic syncing of contacts between Salesforce and Vome.

***

### 7. Tour the Integration Dashboard

The Vome Integration Dashboard has three tabs:

<table><thead><tr><th width="265.99993896484375">Tab</th><th>Purpose</th></tr></thead><tbody><tr><td><strong>Settings</strong></td><td>Vome integration credentials</td></tr><tr><td><strong>Field Mapping</strong></td><td>Map Vome fields to Salesforce fields; add new mappings with <strong>+ Add New Mapping</strong></td></tr><tr><td><strong>Integration Rules</strong></td><td>Define when sync happens (on create, on update, or on a schedule)</td></tr></tbody></table>

***

### 8. Verify Integration Rules

On the **Integration Rules** tab, confirm these rules exist and are active:

| Rule           | Trigger         |
| -------------- | --------------- |
| Upsert Contact | Contact Created |
| Update Contact | Contact Updated |
| Daily Sync     | Scheduled       |

***

### 9. Assign Permission Sets

1. Go to **Setup → Permission Sets**.
2. Find and Click **Vome Integration User**.
3. Click **Manage Assignments → Add Assignments**.
4. Select the users who need access and click **Assign**.

***

### 10. Configure the Vome Webhook

Finally, register your Salesforce Site URL with Vome so events can flow back.

1. Log in to Vome > Integrations & apps > API & webhooks > webhooks
2. Click **+ Add Endpoint**.
3. Enter the webhook URL, using the Site domain from Section 4:

   ```
   https://[Your-Site-Domain]/services/apexrest/Vome/vome/rules/webhook
   ```
4. Select the events you wish to enable for this webhook

{% hint style="info" %}
For example, if you want to update Salesforce when new profiles are added into Vome, you can enable that trigger event. You can include as many events as you expect to integrate with Salesforce
{% endhint %}

1. Set **Status = Active** and click **Save**.

***

### Troubleshooting

> **Integration not applying configuration changes?**
>
> Check that "Deploy Metadata from Non-Certified Package Versions via Apex" is enabled (Section 3).

> **Contacts aren't syncing?**
>
> Verify the **Sync Contact To Vome Trigger** flow is activated (Section 6) and that both Field Map Bundles are active (Section 5C).

> **OAuth connection failing?**
>
> Confirm the **Redirect URI** in Vome OAuth Config matches the **Callback URL** on the External Client App exactly, and that you waited the full 2 to 10 minutes after saving the app (Section 5B).

> **Webhook events not arriving?**
>
> Confirm the Site is Active, `VomeWebhookEndpoint` has Public Access, and the endpoint registered in Vome matches your Site's custom domain exactly.

If you need help or have additional questions, reach out to us at contact us at [support.vomevolunteer.com](https://support.vomevolunteer.com/).
