---
title: Salesforce CRM connector tools
slug: agent-platform/docs/salesforce-crm-connector-tools
docTags: 
createdAt: 2026-08-12T15:37:07.000Z
---

The Salesforce Customer Relationship Management (CRM) connector tools let marketing and sales teams integrate with Salesforce from Agent Platform. The tools streamline workflows, from automating personalized content for new leads and suggesting relevant materials for sales follow-ups. They also provide actionable insights through dynamic reporting and proactive alerts for at-risk opportunities. Mark transforms how teams leverage their CRM for enhanced engagement, efficiency, and competitive advantage.

First, a Mark [administrator](docId\:pe0pbUJveWrG8ewvZWDRE) must [Connect Mark with Salesforce](docId\:abxDK2c9tEiim9CWOWpeH) using Optimizely Connect Platform (OCP). After installing the connector in OCP, individual Mark [users](docId\:L0Ntt9JQmG6fQIJK_Y7C7) and [agent builders](docId\:HOJ_6dibwNf8Qz7WMIDie) can [log in to Salesforce](docId\:abxDK2c9tEiim9CWOWpeH) to access their information from Mark. Administrators only need to install the Salesforce connection in OCP once.

## Connect Mark with Salesforce

The following video and steps walk you through connecting Mark with Salesforce CRM.

### Install Salesforce CRM in OCP

In the OCP **App Directory**, complete the following:

1. Click the **Opal Tool Salesforce CRM** connector tool.
2. Click **Install App**.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/tt9JoJfuoayyq-xre5nxP_install-salesforce-in-ocp.png" size="100" isPlaceholder="true" width="1800" height="1180" darkWidth="1800" darkHeight="1180" showCaption="false" indent="1"}

3. Click the **Settings** tab
4. Leave the **Instance level Mark OAuth** toggle off if you are using Optimizely managed Oauth.
5. Enter your **Salesforce instance URL**.
6. Click **Save**.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/E5W1oDKfvzORVCFUITbuD_save-salesforce-in-ocp.png" size="100" isPlaceholder="true" width="800" height="417" darkWidth="800" darkHeight="417" showCaption="false" indent="1"}

### Enable your toolset preferences

1. Expand the **Tool Permissions** section.
2. Toggle the permissions on that you want.
   - **Enable Data Reading** – Tools that let Mark read data (list, get, describe, count objects, and reports) from Salesforce.
   - **Enable Data Modification** – Tools that let Mark update (create and update objects) in Salesforce.

     ![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/u-kz05rfJKHj9uvAnFHw8_salesforce-tools-permissions.png)

You can modify specific tool access within Mark.

### Add the Salesforce CRM tools to your Mark instances

1. Expand the **Add to Mark** section.
2. Click **Add to Mark** to register the Salesforce CRM connector tools to the corresponding Mark instance. Click **Remove from Mark** to remove the connection.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/Nn96sFEyedYIBz4QSHMTb_add-salesforce-to-opal.png" size="100" isPlaceholder="true" width="1350" height="642" darkWidth="1350" darkHeight="642" showCaption="false" indent="1"}

After you complete the steps in this section, Mark users can then follow the steps in the [Authenticate with Salesforce CRM](docId\:abxDK2c9tEiim9CWOWpeH) section.

### Configure the Salesforce CRM connector

After a Mark administrator [Connects Mark with Salesforce](docId\:abxDK2c9tEiim9CWOWpeH), a Salesforce Admin must complete the following steps in Mark:

1. Go to **Connectors**.
2. Click **Connect** on the **Salesforce CRM** connector.

This makes the Mark app available in Salesforce.

Open a new tab and go to Salesforce. Log in and complete the following steps once:

1. Go to **Setup > Apps > Connected Apps > Connected Apps OAuth Usage**. See [Manage Current OAuth Connected App Sessions in the Salesforce documentation](https://help.salesforce.com/s/articleView?id=xcloud.connected_app_manage_current_sessions.htm\&type=5).
   1. Click **Manage App Policies** on the **Opal** app. See [Manage Access to a Connected App in the Salesforce documentation](https://help.salesforce.com/s/articleView?id=xcloud.connected_app_manage.htm\&type=5).
   2. Click **Edit policies** and adjust IP restrictions to **Relax IP restrictions**. See [Connected App IP Relaxation and Continuous IP Enforcement in the Salesforce documentation](https://help.salesforce.com/s/articleView?id=xcloud.connected_app_continuous_ip.htm\&type=5).
   3. Click **Save**.
2. Click **Install** on the **Connected Apps OAuth Usage** page.

## Authenticate with Salesforce CRM

After an administrator [connects Mark with Salesforce](docId\:abxDK2c9tEiim9CWOWpeH), log in from Mark to access your information. The Salesforce CRM connector tools use user-level authorization, so each Mark user can only access data they have permission to access in Salesforce.

To authenticate, complete the following steps in Mark:

1. Go to **Connectors**.
2. Click **Connect** on the **Salesforce CRM** connector tools.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/H6Sn9PevzVSFkSxB0XqcG_connect-salesforce-in-opal.png" size="100" isPlaceholder="true" width="2014" height="1150" darkWidth="2014" darkHeight="1150" showCaption="false" indent="1"}

3. Log in to **Salesforce** in the window that Optimizely displays.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/uDW8lBtsdw_379wZ9USi3_log-in-to-salesforce.png" size="50" isPlaceholder="true" width="954" height="1274" darkWidth="954" darkHeight="1274" showCaption="false" indent="1"}

After you connect to Salesforce, the  Salesforce CRM connector tools become available in [Mark chat](docId\:dtNBEttEGVvkhNkwNypLM), [agents](docId\:w7MSVijPnuFqu4nXDo_bq), and [workflows](docId:2HD0fUsIsfdek516VtN9l).

## Add skills

Skills help you control how Mark communicates with Salesforce based on how you use it. You should add at least one skill before calling the Salesforce connector tools.

As an example, follow the steps in the [Create an organization-wide skill](docId\:N3n_NnF8J0Ykujmp2Sg00) documentation and enter the following information:

**Name** – *Salesforce Tools*

**Core Skill**

**Salesforce Tool Usage Guidelines:** When interacting with Salesforce data, especially \`Opportunity\` records, always adhere to the following rules:

1. **Opportunity Filtering:**
   1. When querying \`Opportunity\` records, only include opportunities where type is one of the following:
      1. New Customer - Single Product
      2. New Customer - Multiple Products
      3. Existing Customer - Cross Sell
      4. Existing Customer - Cross Sell and Up Sell
   2. If the user mentions "closed won opportunities" in the context of an Opportunity always use 'stage' of 'Closed Won - Finance'
   3. If the user mentions "open opportunities" in the context of an Opportunity, filter by 'opportunity status' is 'Open'
   4. If the user mentions "closed lost opportunities" in the context of an Opportunity always filter by 'stage' is 'Closed Lost'
   5. If the user mentions "top opportunities" always sort descending by the **RecurringSoftwareAmountChange\_\_c** field
   6. Always exclude opportunities with "test", "dummy", or "renewal" in the name (not case sensitive)
   7. Always exclude opportunities where the **RecurringSoftwareAmountChange\_\_c** is null, a non-number, 0, or less than 1
2. **Opportunity Data:**
   1. When returning opportunity data always show: opportunity name, Recurring\_Software\_Amount\_Change\_\_c (label this field 'Recurring Software Amount (converted)'), owner, and close date at a minimum
   2. Always use thousands separators (commas) when displaying number fields. Never show decimal points or cents.
   3. **IMPORTANT:** If the user asks for opportunity "ARR", "amount", "revenue", or "value", always use the **RecurringSoftwareAmountChange\_\_c** field on the opportunity object because this is always in USD currency. Never use the 'Amount' field because it can be in different currencies.
3. **Salesperson/AE Mapping:**
   1. If the user mentions "salesperson" or "AE" in the context of an \`Account\` or \`Opportunity\`, interpret this as a request for the "Primary Account Executive" field.
   2. **Implementation:** When retrieving \`Account\` or \`Opportunity\` records, include the Salesforce API field name for "Primary Account Executive" in the \`fields\` parameter (for example, \`"PrimaryAccountExecutive\_\_c"\` or \`"PrimaryAccountExecutive"\`). \*Note: You may need to use\* \`salesforce\_crm\_describe\_object\` \*to confirm the exact API name of this field if it is a custom field.\*
4. **CSM Mapping:**
   1. If the user mentions "CSM" in the context of an \`Account\` or \`Opportunity\`, interpret this as a request for the "Primary Customer Success Manager" field.
   2. **Implementation:** When retrieving \`Account\` or \`Opportunity\` records, include the Salesforce API field name for "Primary Customer Success Manager" in the \`fields\` parameter (for example, \`"PrimaryCustomerSuccessManager\_\_c"\` or \`"PrimaryCustomerSuccessManager"\`).
   3. \*Note: You may need to use\* \`salesforce\_crm\_describe\_object\` \*to confirm the exact API name of this field if it is a custom field.\*

**When to use** – *When querying Salesforce data with Salesforce CRM tools.*

Update the **Core Skill** with additional information about how your organization uses Salesforce.

## Salesforce CRM connector tools

After a Mark administrator [connects](docId\:abxDK2c9tEiim9CWOWpeH) and [add the required skills](docId\:abxDK2c9tEiim9CWOWpeH) and you [log in to Salesforce](docId\:abxDK2c9tEiim9CWOWpeH) , call the following tools in Mark.

Click a tool's name to expand it and learn when to use it, its required and optional parameters, and example prompts for calling the tool. If you do not provide a required parameter, Mark prompts you for it.

### Objects

Use these tools to count, create, retrieve, and update standard and custom Salesforce records. Choose the tool that matches the operation you need to perform.

:::ExpandableHeading
### `salesforce_crm_count_object` – Counts records in any Salesforce object without retrieving the actual data.

- **When to use**
  - When you want to know the total count of objects without seeing the actual data.
  - To check if records exist before performing operations.
  - To verify data volumes efficiently.
- **Parameters**
  - `objectType` – Salesforce object type to count. For example, "Account", "Lead", or "Product\_Catalog\_\_c".
  - (Optional) `filters` – Filter conditions as JSON string. For example, '\{"Industry": "Technology"}'.
  - (Optional) `createdAfter` – Filter records created on or after this date in YYYY-MM-DD format.
  - (Optional) `createdBefore` – Filter records created on or before this date in YYYY-MM-DD format.
  - (Optional) `customDateField` – Date or datetime field name to filter on, for instance "CloseDate".
  - (Optional) `customDateAfter` – Filter records where `customDateField` is on or after this date in YYYY-MM-DD format.
  - (Optional) `customDateBefore` – Filter records where `customDateField` is on or before this date in YYYY-MM-DD format.
- **Example prompts**
  - *How many accounts are there in Salesforce?*
  - *Count the number of leads created this month.*
  - *How many opportunities are closing this quarter?*
  - *Count cases that were closed last week.*
  - *How many active products are in the Product Catalog?*
:::

:::ExpandableHeading
### `salesforce_crm_create_object` – Creates a new record in any Salesforce object.

- **When to use**
  - To create new records in Salesforce, such as Accounts, Leads, Contacts, Opportunities, or custom objects.
  - When you need to add data to Salesforce programmatically.
  - To streamline the creation of standard or custom Salesforce records.
- **Parameters**
  - `objectType` – Salesforce object type to create a record in. For example, "Account", "Lead", or "Product\_Catalog\_\_c".
  - `fields` – Field values as a JSON string. For example, '\{"Name": "Acme Corporation", "Industry": "Technology"}'.
- **Example prompts**
  - *Create a new Account named "Global Innovations" with Industry "Technology".*
  - *I need to create a Lead for Jane Doe, company "Example Corp", email "jane.doe\@example.com".*
  - *Create an Opportunity named "Q2 2026 Expansion" with Stage "Prospecting" and CloseDate "2026-06-30".*
  - *Add a new product to the Product Catalog with Name "Super Widget", SKU "SW-001", and Price 29.99.*
:::

:::ExpandableHeading
### `salesforce_crm_describe_object` – Describes a Salesforce object and gets its field metadata.

- **When to use**
  - To discover available fields for an object before creating or updating records.
  - To check which fields are required, createable, or updateable.
  - To get valid picklist values for picklist fields.
  - To understand field types and their data formats.
- **Parameters**
  - `objectType` – Salesforce object type to describe. For example, "Account", "Lead", "Product\_Catalog\_\_c".
- **Example prompts**
  - *Describe the Account object in Salesforce.*
  - *Show me the fields available for the Lead object.*
  - *What are the metadata details for the custom object Product\_Catalog\_\_c?*
:::

:::ExpandableHeading
### `salesforce_crm_get_object` – Retrieves a single record from any Salesforce object by ID or field search.

- **When to use**
  - To fetch details of a specific Salesforce record when you know its ID.
  - To find a record by a unique field value, such as an email address or a custom SKU.
  - To retrieve information about a single Account, Lead, Contact, Opportunity, or custom object record.
- **Parameters**
  - `objectType` – Salesforce object type to query. For example, "Account", "Lead", "Product\_Catalog\_\_c".
  - (Optional) `recordId` – Salesforce record ID (18-character ID). If provided, `searchField` and `searchValue` are ignored.
  - (Optional) `searchField` – Field name to search by, for instance, "Name", "Email", "SKU\_\_c". Required if `recordId` is not provided.
  - (Optional) `searchValue` – Value to search for in the specified field. For example, "Acme"or "john\@example.com". Required if `recordId` is not provided.
  - (Optional) `fields` – Comma-separated list of specific field names to retrieve. For example, "Name,Email,Phone". If not specified, Mark returns all queryable fields.
- **Example prompts**
  - *Get the account details for ID "0015e000001ABC123".*
  - *Find the lead with email "john\@example.com".*
  - *Retrieve the opportunity named "Q1 Deal".*
  - *Show me the product details for SKU "PROD-12345".*
:::

:::ExpandableHeading
### `salesforce_crm_list_object` – Lists records from any Salesforce object with optional filtering, sorting, and pagination.

- **When to use**
  - To search and retrieve multiple records from standard or custom Salesforce objects.
  - To filter records by any field using advanced operators.
  - To sort records by any field, including Amount, Name, CloseDate, or custom fields.
  - To paginate through large result sets of Salesforce records.
- **Parameters**
  - `objectType` – Salesforce object type to query (for example, "Account", "Lead", "Opportunity").
  - `fields` – Comma-separated list of specific field names to retrieve (for example, "Name,Email,Phone").
  - (Optional) `filters` – Filter conditions as a JSON string.
  - (Optional) `createdAfter` – Filter records created on or after this date in YYYY-MM-DD format.
  - (Optional) `createdBefore` – Filter records created on or before this date in YYYY-MM-DD format.
  - (Optional) `customDateField` – Date or datetime field name to filter on. For example, "CloseDate".
  - (Optional) `customDateAfter` – Filter records where `customDateField` is on or after this date in YYYY-MM-DD format.
  - (Optional) `customDateBefore` – Filter records where `customDateField` is on or before this date in YYYY-MM-DD format.
  - (Optional) `sortBy` – Field name to sort results by. For example, "Amount" or "Name".
  - (Optional) `sortOrder` – Sort order for results, "ASC" or "DESC".
  - (Optional) `limit` – Maximum number of results to return. Default, 100.
  - (Optional) `nextRecordsUrl` – Salesforce pagination URL from previous response.
- **Example prompts**
  - *List all accounts in the Technology industry, showing their Name, Industry, and Website.*
  - *Show me the top five opportunities by amount, including their Name, StageName, and Amount.*
  - *List leads created this month, displaying their Name, Email, and Company.*
  - *Find all cases with a "High" priority, showing CaseNumber, Subject, and Status.*
:::

:::ExpandableHeading
### `salesforce_crm_update_object` – Updates an existing record in any Salesforce object.

- **When to use**
  - To modify existing records in Salesforce, such as updating an Account's industry or a Lead's status.
  - When you need to change specific fields of a Salesforce record.
  - To automate updates to records based on new information or workflow changes.
- **Parameters**
  - `objectType` – Salesforce object type to update. For example, "Account", "Lead", "Product\_Catalog\_\_c".
  - `recordId` – The ID of the record to update.
  - `fields` – Field values to update as a JSON string. For example, '\{"Industry": "Finance", "Phone": "555-9876"}'.
- **Example prompts**
  - *Update the Account with ID "0015e000001ABC123" to have Industry "Finance" and Phone "555-9876".*
  - *Change the status of Lead "00Q5e000001XYZ789" to "Qualified".*
  - *For Opportunity "0065e000001DEF456", set the StageName to "Closed Won" and Amount to 150000.*
  - *Update the Price\_\_c of Product\_Catalog\_\_c record "a005e000001ABC123" to 129.99.*
:::

### Custom objects

Custom objects are data structures your organization has added to Salesforce beyond the standard set. Use these tools to discover which custom objects exist in your org and to query or filter records within them.

:::ExpandableHeading
### `salesforce_crm_list_custom_object_records` – Lists records from Salesforce custom objects with optional filtering and pagination.

- **When to use**
  - To search and retrieve multiple records from any Salesforce custom object.
  - To filter custom object records by specific criteria, such as status or category.
  - To sort custom object records by any field, including custom date or formula fields.
  - To paginate through large sets of custom object records.
- **Parameters**
  - `objectName` – Custom object API name. Must end with `__c`. For example, "Product\_Catalog\_\_c".
  - (Optional) `filters` – Filter conditions as a JSON string.
  - (Optional) `createdAfter` – Filter records created on or after this date in YYYY-MM-DD format.
  - (Optional) `createdBefore` – Filter records created on or before this date in YYYY-MM-DD format.
  - (Optional) `customDateField` – Date or datetime field name to filter on. For example, "ExpirationDate\_\_c".
  - (Optional) `customDateAfter` – Filter records where `customDateField` is on or after this date in YYYY-MM-DD format.
  - (Optional) `customDateBefore` – Filter records where `customDateField` is on or before this date in YYYY-MM-DD format.
  - (Optional) `sortBy` – Field name to sort results by. For example, "Name" or "Price\_\_c".
  - (Optional) `sortOrder` – Sort order for results, "ASC" or "DESC".
  - (Optional) `limit` – Maximum number of results to return. Default, 100.
  - (Optional) `nextRecordsUrl` – Salesforce pagination URL from previous response.
- **Example prompts**
  - *List all records from the Product\_Catalog\_\_c custom object.*
  - *Show me active products in the Electronics category from Product\_Catalog\_\_c.*
  - *List all contracts from Contract\_\_c expiring in 2026.*
  - *Show me the top five most expensive products from Product\_Catalog\_\_c.*
:::

:::ExpandableHeading
### `salesforce_crm_list_custom_object_types` – Lists all custom object types in the Salesforce organization.

- **When to use**
  - To discover what custom objects exist in the Salesforce organization.
  - To get the API names of custom objects needed for other operations.
  - To understand the structure of custom data in Salesforce.
- **Parameters**
  - None
- **Example prompts**
  - *List all custom object types in Salesforce.*
  - *What custom objects are available in this Salesforce org?*
  - *Show me the API names for all custom objects.*
:::

### Reports

Use these tools to find, inspect, and run existing Salesforce reports. Start with the `salesforce_crm_list_reports` tool to discover available reports. Use the `salesforce_crm_describe_report` tool to review a report's structure and available filters before running it. Then use the `salesforce_crm_run_report` tool to retrieve the data.

:::ExpandableHeading
### `salesforce_crm_describe_report` – Retrieves metadata about a Salesforce report without executing it.

- **When to use**
  - Understand report structure before running it.
  - See available columns and fields.
  - Identify the filters you can apply.
  - Understand groupings and aggregations.
- **Parameters**
  - `reportId` – Salesforce report ID to describe. Starts with "00O". For example, "00O5e000001ABC123". Use the `salesforce_crm_list_reports` tool to find available report IDs.
- **Example prompts**
  - *Tell me about Salesforce report "00O5e000001ABC123".*
  - *What are the available columns and fields for Salesforce report "00O5e000001ABC123".*
:::

:::ExpandableHeading
### `salesforce_crm_list_reports` – Retrieves a list of all reports accessible to you.

- **When to use**
  - Discover available reports.
  - Find reports by name or folder.
  - Identify report IDs for running or describing reports .
- **Parameters**
  - (Optional) `folderId` – ID to filter reports. Folder IDs start with "00l". For example, "00l5e000000ABC123".
    - If provided, Mark returns only reports in this folder.
    - If not provided, Mark returns all accessible reports.
- **Example prompts**
  - *List all reports.*
  - *List reports in a folderId: 00l5e000000ABC123.*
:::

:::ExpandableHeading
### `salesforce_crm_run_report` – Runs a Salesforce report and returns the data.

- **When to use**
  - Execute an existing Salesforce report.
  - Get report data with optional runtime filters.
  - Retrieve aggregated and grouped data.
- **Parameters**
  - `reportId` – Salesforce report ID to execute. Starts with "00O". For example, "00O5e000001ABC123". Use the `salesforce_crm_list_reports` tool to find available report IDs.
  - (Optional) `filters` – Filter conditions as a JSON string.
  - (Optional) `includeDetails` – Whether to include detailed report results in the response. Default, true. Set to false for faster execution when you only need metadata.
- **Example prompts**
  - *Run a report without filters: \{ "reportId": "00O5e000001ABC123" }*
  - *Run a report with runtime filters: \{ "reportId": "00O5e000001ABC123", "filters": "\{\\"reportFilters\\": \[\{\\"column\\": \\"CLOSE\_DATE\\", \\"operator\\": \\"greaterThan\\", ' + '\\"value\\": \\"2025-01-01\\"}]}" }*
  - *Run report without detailed results: \{ "reportId": "00O5e000001ABC123", "includeDetails": false }*
:::

## Use cases

### Personalize content for new leads

**Challenge** – Marketing teams struggle to create and deliver personalized content to new leads, leading to generic outreach and lower engagement.

**Solution with Mark** – Mark can monitor Salesforce for newly created leads. Upon identifying a new lead, Mark automatically retrieves relevant details such as industry, company size, and expressed interests. Leveraging this data, Mark then drafts personalized marketing content, like a tailored email or a blog post summary, ready for review and immediate deployment by the marketing team. This ensures every new lead receives content that resonates, boosting engagement and qualification rates.

### Automate content suggestion for sales follow-up

**Challenge** – Sales representatives spend time searching for appropriate content (case studies, product sheets, or demos) to share with prospects at different stages of the sales cycle, often leading to delays and inconsistent messaging.

**Solution with Mark** – As opportunities advance through Salesforce stages, Mark proactively identifies the need for follow-up content. Based on the opportunity's details (for example, industry, specific product interest, or identified pain points), Mark searches your Content Marketing Platform (CMP) for the most relevant assets. It then suggests these assets directly to the sales rep or even drafts a personalized email incorporating the content, streamlining the follow-up process and ensuring timely, relevant communication.

### Streamline opportunity reporting

**Challenge** – Business users need quick, up-to-date insights into sales pipeline health and opportunity status, but compiling reports from Salesforce can be time-consuming and require specific expertise.

**Solution with Mark** – Ask Mark for a summary of open opportunities, top deals, or opportunities by stage. Mark queries Salesforce in real-time, aggregates the data, and presents it in an easily digestible format, such as a dynamic table or chart within a Mark canvas. This eliminates manual reporting efforts, providing instant, actionable insights for sales leaders and executives, unifying reporting into a single, accessible interface.

### Proactive engagement for at-risk opportunities

**Challenge** – Sales teams often react to at-risk opportunities rather than proactively addressing potential issues, leading to lost deals. Identifying these opportunities early and knowing the best course of action is critical.

**Solution with Mark** – Mark continuously monitors Salesforce opportunities for signs of risk, such as prolonged inactivity, approaching close dates without recent engagement, or changes in competitor presence. When an at-risk opportunity is detected, Mark alerts the sales representative and suggests next-best actions. This could include drafting a re-engagement email, recommending a specific piece of content to share, or prompting a call with a key stakeholder, letting you proactively intervene to keep deals on track.

### Competitive intelligence for sales pitches

**Challenge** – Sales representatives need quick access to up-to-date competitive intelligence to effectively position Optimizely's solutions during critical sales pitches, but this information is often scattered or difficult to retrieve on demand.

**Solution with Mark** – When a sales rep is preparing for a pitch, they can ask Mark for competitive intelligence related to a specific opportunity. Mark retrieves any competitor information stored in Salesforce for that opportunity and then leverages its extensive internal knowledge base (including up-to-date competitor analysis) to provide key differentiators, battle cards, and strategic talking points against the identified competitors. This empowers sales teams with instant, relevant insights to strengthen their pitches and close more deals.

:::hint{type="info"}
**Note**

If you use Opti ID, administrators can turn off generative AI in the Opti ID Admin Center. See [Turn generative AI off across Optimizely applications](docId\:X5U0kKD2azV5cIdNqwGNj).
:::
