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

# Salesforce

> Automations to operationalize your sales process.

## Overview

The Navattic Salesforce integration uses a direct connection through Salesforce's standard OAuth flow, connecting directly to your Salesforce instance using standard objects and custom fields.

## Salesforce Configuration

### Custom Object: Navattic Session

When connecting Salesforce to Navattic, you have the option to create a custom object called **Navattic Session** to track individual demo viewing sessions. This object includes:

<Accordion title="Session Data Fields">
  * Session ID (text, primary field)
  * Started At (datetime)
  * Full Name (text, 255 characters)
  * Email (text, 255 characters)
  * Duration (minutes) (number with 3 decimal places)
  * Steps Viewed (whole number)
  * Demos (text, 255 characters)
  * Flows (text, 255 characters)
  * Very Interested Areas (text, 255 characters)
  * Somewhat Interested Areas (text, 255 characters)
  * Not Interested Areas (text, 255 characters)
</Accordion>

### Integration User Requirements

The Salesforce user account that connects to Navattic needs specific permissions to sync demo engagement data.

<Accordion title="Required Object Permissions">
  The connected user must have **Read** and **Edit** access to:

  * Lead object
  * Contact object
  * Account object
  * Opportunity object
  * Navattic Session object (custom)
</Accordion>

<Accordion title="Required Field-Level Security">
  The user needs **Read** and **Edit** access to:

  **Standard Fields:**

  * Email (on Lead and Contact)
  * FirstName (on Lead and Contact)
  * LastName (on Lead and Contact)
  * Name (on Account and Opportunity)
  * Website (on Account)
  * Company (on Lead)

  **Custom Fields:**

  * All Navattic custom fields listed above
</Accordion>

<Accordion title="Required System Permissions">
  * **API Enabled** - This permission must be enabled on the user's profile or permission set
  * **View All Data** (recommended) - Makes setup easier, though not strictly required
  * **Modify All Data** (recommended) - Makes setup easier, though not strictly required
</Accordion>

<Accordion title="Permission Set Creation">
  During the initial connection, Navattic automatically creates a Permission Set that grants access to:

  * The Navattic Session custom object
  * All fields on the Navattic Session object
  * Full CRUD permissions on Lead, Contact, Account, and Opportunity objects

  This permission set is automatically assigned to the connected integration user.
</Accordion>

<Accordion title="User Account Recommendations">
  **Option 1: Dedicated Integration User (Recommended)**

  Create a dedicated Salesforce user specifically for the Navattic integration:

  * Clear audit trail of all Navattic activities
  * Easy to troubleshoot permission issues
  * Can be disabled without affecting other integrations
  * Doesn't consume a regular user license (use Integration User license if available)

  Setup steps:

  1. Create a new user with Integration User or regular license
  2. Assign a profile with API Enabled permission
  3. Grant the required object and field permissions
  4. Use this user to connect Navattic

  **Option 2: System Administrator User**

  Use your Salesforce admin account to connect:

  * Quick setup with no permission configuration needed
  * Guaranteed to have all required permissions

  Disadvantages:

  * Less clear audit trail
  * All Navattic actions appear as admin actions
  * If admin leaves organization, integration may break
</Accordion>

## Setup Steps

<Steps>
  <Step title="Connect to Salesforce">
    In Navattic, navigate to Settings > Integrations > Salesforce and click **Connect**.

    <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-integration.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=3fddca05ae133913b639dfa7367cb1bc" alt="Salesforce Integration" width="1736" height="772" data-path="images/salesforce-integration.png" />

    You'll be redirected to Salesforce to authorize the connection. Choose:

    * **Production** for your live Salesforce instance
    * **Sandbox** for testing in a Salesforce sandbox environment

    Log in with the user account that will serve as the integration user.

    Once you've connected your Salesforce account, a `Playbook` will be automatically created to send engagement data from demos to your Salesforce Opportunity, Leads, Contact, and Accounts.

    You can click view to manage the `Playbook` or refine the `Audience` filters.

    <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-integration-connected.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=a04bca1530f5a4f4034c5abf7d438097" alt="Salesforce Integration Connected" width="1736" height="772" data-path="images/salesforce-integration-connected.png" />
  </Step>

  <Step title="Review Custom Fields">
    After connecting, Navattic automatically creates the custom fields on your Salesforce objects. You can verify these were created by:

    1. In Salesforce Setup, go to Object Manager
    2. Select Lead, Contact, Account, or Opportunity
    3. Click Fields & Relationships
    4. Look for fields starting with "Navattic\_"
  </Step>

  <Step title="Edit your Salesforce Object page">
    Navigate to your Salesforce object page that you'd like to edit (Opportunity, Lead, Contact, or Account). Select `Edit Page` under the `Setup Menu`.

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-opportunity-page.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=5d55cf8886b3480dadf5625b419e2b81" alt="Salesforce Opportunity page" width="1280" height="706" data-path="images/salesforce-opportunity-page.png" />
    </Frame>

    Search for `Dynamic Related List - Single` in the `Components` search field.

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-component-list.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=7e26bd4cb3f25a63d89e8305149e407c" alt="Salesforce component list" width="1280" height="706" data-path="images/salesforce-component-list.png" />
    </Frame>

    Search for `Navattic Session` in the Related List field. Make sure that the Parent Record is set to the default `Use This Opportunity` (or the relevant Salesforce object).

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-navattic-session.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=ae266e6f1f150d224d694e86b2c639e0" alt="Salesforce Navattic Session" width="1280" height="706" data-path="images/salesforce-navattic-session.png" />
    </Frame>

    Update the `Related List Fields` to show the following fields:

    * Email
    * Demos
    * Duration (minutes)
    * Full Name
    * Flows
    * Steps Viewed
    * Very Interested Areas
    * Somewhat Interested Areas
    * Not Interested Areas
    * Session ID

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-navattic-fields.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=471e52c6be51f3c236c35d596ab19fe0" alt="Salesforce Navattic Fields" width="1280" height="706" data-path="images/salesforce-navattic-fields.png" />
    </Frame>

    Save the Page Builder and exit to the page layout.

    Once a visitor views the interactive demo share link and completes their session, this will be logged in Salesforce.

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-opportunity-navattic-data.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=6d330851a3986e5c7e86a2ccb1c15eb0" alt="Salesforce Opportunity Navattic Data" width="2560" height="1184" data-path="images/salesforce-opportunity-navattic-data.png" />
    </Frame>

    <Frame>
      <img className="rounded-xl border overflow-hidden" src="https://mintcdn.com/navattic-app/Wym34-C-snZlIePn/images/salesforce-opportunity-navattic-session-data.png?fit=max&auto=format&n=Wym34-C-snZlIePn&q=85&s=05ebdf84de1ddcec886e072a5d1ac47c" alt="Salesforce Opportunity Navattic Session Data" width="2560" height="510" data-path="images/salesforce-opportunity-navattic-session-data.png" />
    </Frame>

    <Icon icon="party-popper" /> **Congratulations** -- You've finished setting up Salesforce with Navattic. Reps can now connect <a href="/launchpad/share/share-demos#add-salesforce-opportunity">Salesforce opportunities to share links</a>.
  </Step>

  <Step title="Configure Field Mappings">
    Go to the Salesforce integration settings in Navattic and set up field mappings to control which engagement data syncs to which Salesforce fields.

    See [Field Mappings](/integrations/field-mappings) for detailed configuration options.
  </Step>

  <Step title="Set Up Playbooks">
    Create Playbooks to define when and how demo engagement data should sync to Salesforce.

    See [Salesforce Integration](/integrations/salesforce) for complete setup instructions.
  </Step>
</Steps>

## Opportunity owner data

When a presentation is connected to a Salesforce opportunity, Navattic automatically looks up the opportunity owner in Salesforce and stores their details as custom properties on the session.

| Property                  | Description                                                       |
| ------------------------- | ----------------------------------------------------------------- |
| **OpportunityOwnerEmail** | The email address of the Salesforce user who owns the opportunity |
| **OpportunityOwnerId**    | The Salesforce user ID of the opportunity owner                   |

These values are populated automatically — no additional configuration is required. They are included in webhook payloads and can be used in downstream workflows, such as routing notifications to the rep who owns the deal.

<Note>
  Opportunity owner data is only populated when a presentation share link has a Salesforce opportunity connected. See [Present demos](/launchpad/share/present#salesforce-opportunity) for instructions on connecting an opportunity to a share link.
</Note>

## Troubleshooting

### Connection Fails with "Insufficient Permissions"

**Cause:** The Salesforce user doesn't have API Enabled permission.

**Solution:**

1. Go to Salesforce Setup > Users > Profiles
2. Find the user's profile and edit it
3. Ensure "API Enabled" is checked under System Permissions
4. Save and retry the connection

### Custom Fields Not Created

**Cause:** The user may lack Modify Metadata permission or field creation is restricted.

**Solution:**

1. Use a System Administrator account to connect initially
2. Custom fields will be created automatically
3. You can then adjust permissions and reconnect with a different user if needed

### Data Not Syncing to Salesforce

**Cause:** Field-level security may be preventing writes to custom fields.

**Solution:**

1. Go to Salesforce Setup > Object Manager
2. Select the affected object (Lead, Contact, Account, or Opportunity)
3. Click Fields & Relationships
4. For each Navattic custom field, click the field name
5. Click "Set Field-Level Security"
6. Ensure the integration user's profile has "Visible" and "Editable" checked
7. Save changes

### "Record Locked" or "Unable to Lock Row" Errors

**Cause:** Salesforce record locking during high-volume updates.

**Solution:**

* These errors are typically temporary and Navattic will retry
* If persistent, check for workflow rules or validation rules that may be causing conflicts
* Consider adjusting the timing of your Playbook triggers to spread out updates

### Permission Set Assignment Fails

**Cause:** User already has maximum number of permission set assignments.

**Solution:**

1. In Salesforce Setup, go to Users > Permission Sets
2. Find "Navattic Permission Set"
3. Manually assign it to the integration user
4. Or consolidate other permission sets if the user has reached the limit

## Security Considerations

### OAuth Token Storage

Navattic stores OAuth tokens securely and uses them only to sync data according to your configured Playbooks. Tokens are:

* Encrypted at rest
* Only used for authorized API operations
* Automatically refreshed when needed
* Revocable at any time from Salesforce

### Data Access

The integration only:

* Reads data needed to match visitors to Leads/Contacts
* Writes engagement data to fields you've mapped
* Never modifies other Salesforce data
* Respects your Salesforce sharing rules and permissions

### Disconnecting the Integration

To disconnect Navattic from Salesforce:

1. In Navattic: Go to Settings > Integrations > Salesforce and click **Disconnect**
2. In Salesforce: Go to Setup > Connected Apps OAuth Usage to view and revoke the connection

Custom fields created during setup will remain in Salesforce but will no longer receive updates from Navattic.
