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

# Salesforce

This article outlines the integration with the Salesforce connector, enabling streamlined metadata management through features such as crawling, profiling, sample profiling, data preview, querying, and manual lineage building. It also ensures secure authentication via Credential Manager.

The connector connects to Salesforce Sales Cloud through REST APIs and supports token-based and JSON Web Token (JWT) authentication. It provides access to Salesforce objects, fields, and indexed fields based on the configured user permissions and authentication credentials.

<div align="left"><figure><img src="https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2F7l1PcikjHzASUVNPDe22%2Fimage.png?alt=media&amp;token=8b22df3a-6735-4e61-8bc8-63074b6b997a" alt=""><figcaption></figcaption></figure></div>

## Overview

### Connector Details

<table data-header-hidden><thead><tr><th width="444"></th><th></th></tr></thead><tbody><tr><td>Connector Category</td><td>Application</td></tr><tr><td>OvalEdge Release Supported</td><td>Release6.3.x and later</td></tr><tr><td><p>Connectivity</p><p>[How the connection is established with Salesforce]</p></td><td>REST APIs</td></tr><tr><td>Verified Salesforce API Versions</td><td>v64 and below</td></tr></tbody></table>

{% hint style="info" %}
The Salesforce connector has been validated with the mentioned "Verified Salesforce API Versions" and is expected to be compatible with other supported Salesforce API versions. If there are any issues with validation or metadata crawling, please submit a support ticket for investigation and feedback.
{% endhint %}

### Connector Features

<table data-search="false"><thead><tr><th>Feature</th><th align="center">Availability</th></tr></thead><tbody><tr><td>Crawling</td><td align="center">✅</td></tr><tr><td>Delta Crawling</td><td align="center">❌</td></tr><tr><td>Profiling</td><td align="center">✅</td></tr><tr><td>Sample Profiling</td><td align="center">✅</td></tr><tr><td>Query Sheet</td><td align="center">✅</td></tr><tr><td>Data Preview</td><td align="center">✅</td></tr><tr><td>Auto Lineage</td><td align="center">❌</td></tr><tr><td>Manual Lineage</td><td align="center">✅</td></tr><tr><td>Secure Authentication via Credential Manager</td><td align="center">✅</td></tr><tr><td>Data Quality</td><td align="center">❌</td></tr><tr><td>DAM (Data Access Management)</td><td align="center">❌</td></tr><tr><td>Bridge</td><td align="center">✅</td></tr></tbody></table>

{% hint style="info" %}
Object and field relationship metadata (such as child relationships) is collected for internal mapping. However, full automatic lineage generation is not supported.
{% endhint %}

### Metadata Mapping

The following objects are crawled from Salesforce and mapped to the corresponding UI assets.

<table data-search="false"><thead><tr><th width="250.5">Salesforce Object</th><th width="200.916748046875">Salesforce Attribute</th><th width="184.7501220703125">OvalEdge Attribute</th><th width="179">OvalEdge Category</th><th width="237.166748046875">OvalEdge Type</th></tr></thead><tbody><tr><td>Objects (System &#x26; Custom)</td><td>Object Name</td><td>Table Name</td><td>Tables</td><td>Table</td></tr><tr><td>Objects (System &#x26; Custom)</td><td>Object Description</td><td>Table Comment</td><td>Tables</td><td>Table</td></tr><tr><td>Object Fields</td><td>Field Name</td><td>Column Name</td><td>Table Columns</td><td>Columns</td></tr><tr><td>Object Fields</td><td>Field Type</td><td>Data Type</td><td>Table Columns</td><td>Columns</td></tr><tr><td>Object Fields</td><td>Field Length</td><td>Data Type Size</td><td>Table Columns</td><td>Columns</td></tr><tr><td>Object Fields</td><td>Field Description</td><td>Source Description</td><td>Table Columns</td><td>Description</td></tr><tr><td>Object Fields</td><td>Field Name</td><td>Title</td><td>Table Columns</td><td>Columns</td></tr><tr><td>Indexes</td><td>Index Name</td><td>Index</td><td>Indexes</td><td>Index</td></tr><tr><td>Indexes</td><td>If Unique</td><td>Yes/No</td><td>Indexes</td><td>Index</td></tr></tbody></table>

{% hint style="info" %}
Salesforce does not provide a native schema; the connector creates a default logical schema named “Salesforce.” This is always a single schema under which all objects are organized. Multiple schemas are not supported, and expecting them may cause confusion during crawling or profiling.
{% endhint %}

{% hint style="info" %}
Index metadata is not included by default in crawl results. It is retrieved only when the index crawl option (**isIndexes**) is enabled. Users expecting index metadata by default may find it missing. Ensure this option is explicitly enabled in the connector or crawler configuration to extract index details.
{% endhint %}

## Set up a Connection

### Prerequisites

The following are the prerequisites to establish a connection:

#### **Service Account User Permissions**

Before configuring the connector, the Salesforce environment must be prepared with the necessary User, Connected App, and authentication flows. These components are essential for managing secure access and generating the required integration credentials. For detailed instructions on setting up these prerequisites, click [here](https://docs.ovaledge.com/connectors/connector-repositories/application/salesforce/salesforce-authentication-and-integration).

{% hint style="warning" %}
It is recommended to use a dedicated service account to establish the connection to the data source, configured with the following minimum set of permissions.
{% endhint %}

{% hint style="info" %}
👨‍💻**Who can provide these permissions?** These permissions are typically granted by the Salesforce administrator, as users may not have the required access to assign them independently.
{% endhint %}

| Objects | Sys Tables     | Permission |
| ------- | -------------- | ---------- |
| Tables  | Objects        | Read       |
| Columns | Object fields  | Read       |
| Indexes | Indexed Fields | Read       |

{% hint style="info" %}
For the Tables operation, the user must have API Enabled permission and read access to the objects to be crawled. These objects will appear as tables in the Application after crawling.
{% endhint %}

{% hint style="info" %}
For the Columns & Indexes operation, the user must have read access to the object fields to be crawled. These fields will appear as table columns in the Application after crawling.
{% endhint %}

### Connection Configuration Steps

{% hint style="warning" %}
Users are required to have the Connector Creator role in order to configure a new connection.
{% endhint %}

1. Log into **OvalEdge**, go to **Administration > Connectors**, click **+ (New Connector)**, search for **Salesforce**, and complete the required parameters.

{% hint style="info" %}
Fields marked with an asterisk (\*) are mandatory for establishing a connection.
{% endhint %}

<table><thead><tr><th width="220.25">Field Name</th><th>Description</th></tr></thead><tbody><tr><td>Connector Type</td><td>By default, "Salesforce" is displayed as the selected connector type.</td></tr><tr><td>Credential Manager*</td><td><p>Select the desired credential manager from the drop-down list. Relevant parameters will be displayed based on the selection.</p><p>Supported Credential Managers:</p><ul><li>OE Credential Manager</li><li>AWS Secrets Manager</li><li>HashiCorp Vault</li><li>Azure Key Vault</li></ul><p>For more details, click <a href="https://docs.ovaledge.com/connectors/additional-requirements/credential-manager-configuration">here</a>.</p></td></tr><tr><td>Authentication Type</td><td><p>The following two types of authentication are supported for Salesforce:</p><ul><li>Token Based</li><li>JSON Web Token (JWT)</li></ul></td></tr></tbody></table>

{% tabs %}
{% tab title="Token Based" %}

<table><thead><tr><th width="191.8055419921875">Field Name</th><th>Description</th></tr></thead><tbody><tr><td>Connector Name*</td><td>Enter a unique name for the Salesforce connection (Example: "Salesforce_Prod").</td></tr><tr><td>Connector Description</td><td>Enter a description to identify the purpose of the connector.</td></tr><tr><td>Connector Environment</td><td>Select the environment (Example: PROD, STG) configured for the connector.<br>For more details, click <a href="https://docs.ovaledge.com/connectors/introduction-to-connectors/setup-and-connectivity/prerequisites#connector-environment">here</a>.</td></tr><tr><td>Username*</td><td>Enter the Salesforce username for the user account used for API access. It is usually in the format of an email (e.g., apiuser@xxxx.com).</td></tr><tr><td>Password*</td><td>Enter the password for the Salesforce user account used for API access.</td></tr><tr><td>Consumer Key*</td><td>It is generated when a Connected App is created in Salesforce and is used to identify the client making the API request.</td></tr><tr><td>Consumer Secret*</td><td>It is generated with the Connected App in Salesforce and is used along with the Customer Key to connect and authenticate the application securely.</td></tr><tr><td>Security token</td><td>A unique token generated by Salesforce for API access. Required when logging in from untrusted IP addresses. It must be appended to the password during login if the IP address is not whitelisted. This can be obtained by using the "Reset My Security Token" option in Salesforce.</td></tr><tr><td>API version*</td><td>Enter the version of the Salesforce REST API to be used (e.g., v59.0). This determines the available endpoints and features.<br><br><strong>Note</strong>: API version must be selected from the supported versions list.</td></tr><tr><td>Sandbox Environment*</td><td>Select Yes if the Salesforce environment is a sandbox (test environment), or No if it is a production environment. Sandbox environments usually have URLs like test.salesforce.com.</td></tr><tr><td>Proxy Enabled*</td><td>Select Yes to route API calls through a proxy server. Select No to bypass the proxy and connect directly.</td></tr></tbody></table>
{% endtab %}

{% tab title="JSON Web Token (JWT)" %}

<table><thead><tr><th width="220.25">Field Name</th><th>Description</th></tr></thead><tbody><tr><td>Connector Name*</td><td>Enter a unique name for the Salesforce connection (Example: "Salesforce_Prod").</td></tr><tr><td>Connector Description</td><td>Enter a description to identify the purpose of the connector.</td></tr><tr><td>Connector Environment</td><td>Select the environment (Example: PROD, STG) configured for the connector.<br>For more details, click <a href="https://docs.ovaledge.com/connectors/introduction-to-connectors/setup-and-connectivity/prerequisites#connector-environment">here</a>.</td></tr><tr><td>Username*</td><td>Enter the Salesforce username for the user account used for API access. It is usually in the format of an email (e.g., apiuser@xxxx.com).</td></tr><tr><td>Consumer Key*</td><td>It is generated when a Connected App is created in Salesforce and is used to identify the client making the API request.</td></tr><tr><td>API version*</td><td>Enter the version of the Salesforce REST or SOAP API to be used (e.g., v59.0). This determines the available endpoints and features.</td></tr><tr><td>Sandbox Environment*</td><td>Select Yes if the Salesforce environment is a sandbox (test environment), or No if it is a production environment. Sandbox environments usually have URLs like test.salesforce.com.</td></tr><tr><td>Alias name*</td><td>Enter the alias name used to identify the specific key entry within the keystore. Each key entry in the key store is associated with a unique alias.</td></tr><tr><td>Keystore password*</td><td>Enter the password used to access the keystore file. This password protects the keystore and ensures secure access to the stored certificates and keys.</td></tr><tr><td>Keystore file path*</td><td>Provide the full path and file name of the Java Keystore (jks) file. This file contains the security certificates and keys required for establishing a secure SSL/TLS connection.</td></tr><tr><td>Proxy Enabled*</td><td>Select Yes to route API calls through a proxy server. Select No to bypass the proxy and connect directly.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

**Default Governance Roles**

<table data-header-hidden><thead><tr><th width="220.22222900390625"></th><th></th></tr></thead><tbody><tr><td>Default Governance Roles*</td><td>Select the appropriate users or teams for each governance role from the drop-down list. All users configured in the security settings are available for selection.</td></tr></tbody></table>

**Admin Roles**

<table data-header-hidden><thead><tr><th width="219.3333740234375"></th><th></th></tr></thead><tbody><tr><td>Admin Roles*</td><td>Select one or more users from the dropdown list for Integration Admin and Security &#x26; Governance Admin. All users configured in the security settings are available for selection.</td></tr></tbody></table>

**Bridge**

<table data-header-hidden><thead><tr><th width="219.3333740234375"></th><th></th></tr></thead><tbody><tr><td>Select Bridge*</td><td><p>Select the bridge from the drop-down list.</p><p>The drop-down list displays all active bridges that have been configured. These bridges facilitate communication between data sources and the system without requiring changes to firewall rules.</p></td></tr></tbody></table>

2. After entering all connection details, the following actions can be performed:
   1. Click **Validate** to verify the connection.
   2. Click **Save** to store the connection for future use.
   3. Click **Save & Configure** to apply additional settings before saving.
3. The saved connection will appear on the **Connectors home** page.

## Manage Connector Operations

### Crawl/Profile

{% hint style="warning" %}
To perform crawl and profile operations, users must be assigned the Integration Admin role.
{% endhint %}

The **Crawl/Profile** button allows users to select one or more schemas for crawling and profiling.

1. Navigate to the **Connectors page** and click **Crawl/Profile.**
2. Select the schemas to be crawled.
3. The **Crawl** option is selected by default. To perform both operations, select the **Crawl & Profile** radio button.
4. Click **Run** to collect metadata from the connected source and load it into the Data Catalog.
5. After a successful crawl, the information appears in the **Data Catalog > Databases** tab.

The **Schedule** checkbox allows automated crawling and profiling at defined intervals, from a minute to a year.

1. Click the **Schedule** checkbox to enable the **Select Period** drop-down.
2. Select a time period for the operation from the drop-down menu.
3. Click **Schedule** to initiate metadata collection from the connected source.
4. The system will automatically execute the selected operation (**Crawl** or **Crawl & Profile**) at the scheduled time.

#### Other Operations

The Connectors page provides a centralized view of all configured connectors, along with their health status.

**Managing connectors includes:**

* **Connector Health:** Displays the current status of each connector using a green icon for active connections and a red icon for inactive connections, helping to monitor connectivity with data sources.
* **Viewing**: Click the **Eye icon** next to the connector name to view connector details.

**Nine Dots Menu Options:**

To view, edit, validate, build lineage, configure, or delete connectors, click on the **Nine Dots** menu.

* **Edit Connector**: Update and revalidate the data source.
* **Validate Connector:** Check the connection's integrity.
* **Settings**: Modify connector settings.
  * **Crawler**: Configure data extraction.
  * **Profiler**: Customize data profiling rules and methods.
  * **Query Policies:** Define query execution rules based on roles.
  * **Access Instructions**: Add notes on how data can be accessed.
  * **Connection Pooling**: Configure database connection pool parameters to optimize database connectivity and resource utilization. For more details, click [here](https://docs.ovaledge.com/connectors/introduction-to-connectors/setup-and-connectivity/connector-settings#connection-pooling).
  * **Business Glossary Settings:** Manage term associations at the connector level.
  * **Lineage**: Configure Server Dialects for source code parsing and Connector Priority for table lineage connection.
  * **Others**: Configure notification recipients for metadata changes.
* **Delete Connector:** Remove a connector with confirmation.

For more details on connector settings, click [here](https://docs.ovaledge.com/connectors/introduction-to-connectors/setup-and-connectivity/connector-settings).

## Limitations

<table><thead><tr><th width="84.6666259765625">S. No</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>In the Auto tab, the following operations are currently not supported: Filters, Group By, Rename, Aggregate functions, Ascending (ASC), Descending (DSC), and Original Sort.</td></tr><tr><td>2</td><td>For Full Profiling, Salesforce enforces metadata restrictions at the column level. If a column is <strong>not filterable, aggregatable, or groupable</strong>, full profiling queries cannot be executed on that column. In such cases, the connector automatically falls back to <strong>Sample Profiling</strong> and computes metrics using the configured sample size defined in the profiling settings. This behavior is expected and ensures profiling completes successfully without failures on unsupported Salesforce fields.</td></tr><tr><td>3</td><td>In Filter Operation, the “Not Contains” condition is not supported within the filter functionality.</td></tr><tr><td>4</td><td>In the Rename Operation, renaming columns is not supported. Attempting this action results in the error: “Define Column Alias is not supported for Salesforce.”</td></tr><tr><td>5</td><td>In certain scenarios, data may not be displayed in the console as expected. Due to this behavior, Join and Union operations cannot be performed on the affected datasets.</td></tr><tr><td>6</td><td>During Query Execution, the DDL and DML queries cannot be executed.</td></tr></tbody></table>

## Troubleshooting

If incorrect parameters are entered, error messages may appear. Ensure all inputs are accurate to resolve these issues. If issues persist, contact the assigned **support team**.

{% tabs %}
{% tab title="Connectivity" %}

<table data-search="true"><thead><tr><th width="82.453125">S. No</th><th width="190.23828125">Error Message</th><th>Error Description &#x26; Resolution</th></tr></thead><tbody><tr><td>1</td><td>Error while validating connection: HTTP 403, INVALID_LOGIN: Invalid username, password, security token, or user locked out</td><td><p>The login can fail because of an incorrect username/password, a missing or outdated security token, or a locked account.</p><p><strong>Resolution</strong>:</p><ul><li>Confirm the service account username and password and verify that the account is not locked.</li><li>If connecting from an untrusted network range, generate and provide a valid security token. A trusted network range does not require one.</li><li>Review Login History in Salesforce Setup to identify the reason for the rejected login.</li></ul></td></tr><tr><td>2</td><td>Error while validating connection: consumer key or consumer secret missing or invalid</td><td><p>Token-based authentication requires both the consumer key and consumer secret from the Salesforce connected app. The connection cannot be validated if either value is missing or incorrect.</p><p><strong>Resolution</strong>:</p><ul><li>Open the Salesforce connected app in Salesforce Setup and select Manage Consumer Details to view the consumer key and consumer secret.</li><li>Copy both values exactly into the corresponding setup fields without extra spaces.</li><li>Re-enter the values and validate the connection again.</li></ul></td></tr><tr><td>3</td><td>Error while validating connection: unable to authenticate using certificate-based login</td><td><p>Certificate-based authentication fails when the Salesforce certificate alias, keystore file path, or keystore password is incorrect.</p><p><strong>Resolution</strong>:</p><ul><li>Confirm that the alias entered in the setup form exactly matches the certificate's unique name in Salesforce.</li><li>Verify that the key store file is accessible from the machine running the crawl and that the key store password is correct.</li><li>Recreate the certificate if its unique name cannot be confirmed, then update the setup form with the new alias.</li></ul></td></tr></tbody></table>
{% endtab %}

{% tab title="Crawling" %}

<table data-search="true"><thead><tr><th width="83.56640625">S. No</th><th width="191.390625">Error Message</th><th>Error Description &#x26; Resolution</th></tr></thead><tbody><tr><td>1</td><td>Crawl completed with errors: REQUEST_LIMIT_EXCEEDED, TotalRequests Limit exceeded</td><td><p>The crawl exceeded the daily API request limit allowed for the Salesforce account. The limit varies by Salesforce account type.</p><p><strong>Resolution</strong>:</p><ul><li>Confirm the Salesforce account type; Developer accounts have a much lower daily limit than Professional or Enterprise accounts.</li><li>Reduce crawl frequency or narrow the objects being crawled if the account cannot be upgraded.</li><li>Retry the crawl after the daily limit resets.</li></ul></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## FAQs

{% tabs %}
{% tab title="Connectivity" %}

<table data-search="true"><thead><tr><th width="84.6640625">S. No</th><th width="190.140625">Question</th><th>Answer</th></tr></thead><tbody><tr><td>1</td><td>What is the difference between token-based authentication and certificate-based authentication for the Salesforce connector?</td><td><p>Two authentication methods are available:</p><ul><li>Token-based authentication: Requires a service account username, password, consumer key, consumer secret, and, in some cases, a security token.</li><li>Certificate-based authentication: Also called JWT-based authentication. Uses a Salesforce certificate, alias name, key store password, and key store file path instead of a password and consumer secret.</li><li>Certificate-based authentication can be used when the password or secret should not be stored directly in the setup form.</li><li>Token-based authentication is simpler when this requirement does not apply.</li></ul></td></tr><tr><td>2</td><td>Why is a security token sometimes not required while setting up the connection?</td><td><p>Salesforce determines whether a security token is required based on its configured IP restrictions.</p><ul><li>Trusted network range: A security token is not required.</li><li>Untrusted network range: A security token is required along with the password.</li><li>Therefore, the security token is conditionally required based on the Salesforce network configuration.</li></ul></td></tr><tr><td>3</td><td>Which vault-type credential managers are supported for storing Salesforce login details?</td><td><p>Three vault-based credential managers are supported:</p><ul><li>HashiCorp</li><li>AWS Secrets Manager</li><li>Azure Key Vault</li></ul><p>When a vault is selected:</p><ul><li>Create the connection to the vault first.</li><li>Enter the specific key names configured in the vault in the setup form.</li><li>The connector retrieves the actual credential values from the vault during validation.</li></ul></td></tr><tr><td>4</td><td>What permissions need to be enabled while creating the connected app in Salesforce?</td><td><p>When creating the connected app:</p><ul><li>Enable the scope that allows the app to manage user data through the API.</li><li>Enable the scope that allows the app to perform requests at any time for refresh-based authentication.</li><li>Enable the required OAuth settings.</li><li>Define a callback address, even though it is not actively used for the login flow, because Salesforce requires one during app creation.</li></ul></td></tr></tbody></table>
{% endtab %}

{% tab title="Crawling" %}

<table data-search="true"><thead><tr><th width="83.35546875">S. No</th><th width="190.45703125">Question</th><th>Answer</th></tr></thead><tbody><tr><td>1</td><td>Why does the crawl not show individual schemas the way other database connectors do?</td><td><p>Salesforce does not use multiple schemas like relational databases.</p><ul><li>All objects available in the Salesforce account are grouped under a single default schema.</li><li>Only one schema appears when browsing or crawling a Salesforce connection.</li><li>This is expected behavior and does not indicate a configuration problem.</li></ul></td></tr><tr><td>2</td><td>Why are table and column names shown using the API name instead of the display label?</td><td><p>Salesforce objects and fields have both a label and an API name.</p><ul><li>The connector displays the API name as the table name and the field name as the column name.</li><li>API names are stable identifiers used for programmatic access.</li><li>API names remain unchanged even if the display label is edited in Salesforce.</li></ul></td></tr><tr><td>3</td><td>What is a picklist field and why does it matter?</td><td><p>A picklist is a Salesforce field that provides a predefined set of values, similar to a dropdown.</p><ul><li>Users select from predefined values instead of entering free text.</li><li>Picklist values can represent business categories such as countries or account types.</li><li>The connector captures and displays the available picklist values as part of the field information.</li></ul></td></tr><tr><td>4</td><td>What are validation rules in Salesforce and are they captured by the connector?</td><td><p>Validation rules are conditions configured in Salesforce to control the data allowed in a field or object.</p><ul><li>Validation rules can enforce business requirements, such as requiring an industry value for a specific account type.</li><li>Validation rules can restrict field formats, such as requiring a specific number of digits for a phone number.</li><li>The connector retrieves validation rules and displays them in a dedicated metadata section at the object level.</li></ul></td></tr><tr><td>5</td><td>How is data preview generated for Salesforce objects, since Salesforce does not use standard database queries?</td><td><p>Salesforce uses its own query language instead of standard relational database queries.</p><ul><li>The connector generates a Salesforce-specific query in the background.</li><li>The query is sent through the Salesforce API.</li><li>Salesforce returns the matching records, which are displayed in the data preview.</li></ul></td></tr><tr><td>6</td><td>Does Salesforce have views and indexes the way database systems do?</td><td><p>Salesforce does not have formal views like relational databases.</p><ul><li>Salesforce organizes data through objects rather than database views.</li><li>The shared Views setting may still appear because it is common across connectors and can be left unchanged.</li><li>No view-type objects are found during a Salesforce crawl.</li><li>Indexing information is available and is retrieved as part of the object structure.</li></ul></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

***

Copyright © 2026, OvalEdge LLC, Peachtree Corners GA USA


---

# 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://docs.ovaledge.com/connectors/connector-repositories/application/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.
