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

# Salesforce

> Sync Wave contacts into Salesforce as Leads or Contacts

<Info>
  Available on the **Pro**, **Teams**, and **Enterprise** plans.
</Info>

The Salesforce integration syncs Wave contacts into Salesforce as either Leads or Contacts, your choice at setup. Wave uses a custom external ID field to upsert records, preventing duplicates even if a record already exists. Both production and sandbox Salesforce environments are supported.

## How to Connect

<Steps>
  <Step title="Open the integration">
    Go to **Integrations → Salesforce**.
  </Step>

  <Step title="Choose a record type">
    Choose whether to sync contacts as **Leads** or **Contacts**.
  </Step>

  <Step title="Enable auto-sync (optional)">
    Turn on **Auto-sync** to import all existing Wave contacts immediately.
  </Step>

  <Step title="Connect Salesforce">
    Click **Connect** and sign in to your Salesforce account.
  </Step>
</Steps>

Wave requests offline access (to keep the connection active without repeated logins) and read/write access to create and update records in Salesforce.

## What Gets Synced

| Wave field           | Salesforce field              |      Leads     | Contacts |
| -------------------- | ----------------------------- | :------------: | :------: |
| First name           | `FirstName`                   |       Yes      |    Yes   |
| Last name            | `LastName`                    |       Yes      |    Yes   |
| Primary email        | `Email`                       |       Yes      |    Yes   |
| Primary phone        | `Phone`                       |       Yes      |    Yes   |
| Job title            | `Title`                       |       Yes      |    Yes   |
| Company              | `Company`                     | Yes (required) |     -    |
| Contact note         | `Description`                 |       Yes      |    Yes   |
| Lead source          | `LeadSource` = "Wave Connect" |       Yes      |     -    |
| Assigned team member | `OwnerId` (matched by email)  |       Yes      |    Yes   |

**Sync direction**: Wave → Salesforce (outbound only)

**When it syncs**: Real-time on contact create, update, or delete

## Features

* **Leads or Contacts**: choose the Salesforce record type that fits your workflow.
* **Sandbox support**: connect to a Salesforce sandbox environment for testing.
* **Auto-sync on connect**: import all existing Wave contacts on first connection.
* **Deduplication**: a custom external ID field (`WaveConnectId__c`) is created automatically and used for upserts, so re-syncing never creates duplicates.
* **Owner assignment**: contacts are assigned to the Salesforce user whose email matches the Wave team member.

## Manually Adding the External ID Field

Wave normally creates the `WaveConnectId__c` external ID field automatically when you connect. You only need this step if you connect **without a Salesforce admin account**, since creating a custom field requires admin permissions. In that case, have your Salesforce administrator add the field manually as a backup.

<Steps>
  <Step title="Open the Lead object">
    In Salesforce **Setup**, open **Object Manager** and select the **Lead** object.
  </Step>

  <Step title="Check for the field">
    Under **Fields & Relationships**, check whether `WaveConnectId__c` already exists.
  </Step>

  <Step title="Create the field">
    If it doesn't exist, click **New**, select **Text** as the field type, and name it so the API name is `WaveConnectId__c`.
  </Step>

  <Step title="Set field-level security">
    Confirm that **Standard User** has read/write access to the field.
  </Step>

  <Step title="Add to page layouts and save">
    Add the field to the relevant page layouts, then save.
  </Step>
</Steps>

<Note>
  If the field already exists, open it and select **Set Field-Level Security** to confirm **Standard User** has read/write access. For full details, see the [Salesforce setup guide](https://support.wavecnct.com/en/articles/10492839-salesforce).
</Note>

## Limitations & Requirements

* The custom field `WaveConnectId__c` is created automatically on your Salesforce account. Do not delete or rename it. It is used for deduplication.
* For Leads, the `Company` field is required by Salesforce. If a Wave contact has no company, it defaults to `N/A`.
* If Salesforce detects a duplicate via its duplicate rules, Wave overrides the rule and saves the record.
* Owner matching is by email. If no matching Salesforce user is found, the contact is saved without an owner.

## Disconnecting

Go to **Integrations → Salesforce** and click **Disconnect**. This removes the integration and revokes Wave's access. Records already synced to Salesforce are not deleted.
