> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Salesforce

## परिचय

कस्टमर डेटा ऐक्सेस करने, लीड्स मैनेज करने और अवसर बनाने के लिए अपने ElevenLabs AI एजेंट्स को Salesforce CRM से कनेक्ट करें। यह इंटीग्रेशन आपके एजेंट्स को मौजूदा कस्टमर रिकॉर्ड प्राप्त करने, नई लीड्स और कॉन्टैक्ट्स बनाने और बातचीत के दौरान Salesforce ऑब्जेक्ट्स को क्वेरी करने देता है।

## क्षमताएं

| क्षमता                  | सहायता                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------ |
| ज़ीरो रिटेंशन मोड (ZRM) | समर्थित नहीं                                                                               |
| ट्रिगर्स में अटैचमेंट   | समर्थित नहीं — आने वाली केस टिप्पणियों और ईमेल के अटैचमेंट एजेंट को फ़ॉरवर्ड नहीं किए जाते |
| टूल्स में अटैचमेंट      | समर्थित नहीं — टूल्स सिर्फ़ टेक्स्ट पर काम करते हैं                                        |

## सेटअप

यह इंटीग्रेशन ऑथेंटिकेशन के लिए **Salesforce OAuth 2.0 Client Credentials** का इस्तेमाल करता है। आपको Salesforce में एक External Client App बनाना होगा।

#### एक External Client App बनाएं

1. एडमिनिस्ट्रेटर के तौर पर अपने Salesforce org में लॉग इन करें
2. **Setup** > **External Client App Manager** पर जाएं
3. **New External Client App** पर क्लिक करें
4. **External Client App Name** (जैसे, `ElevenLabs Agents`), **API Name**, और **Contact Email** भरें
5. **API (Enable OAuth Settings)** में:
   * **Enable OAuth** और **Enable Client Credentials Flow** चुनें
   * **Callback URL**: `https://api.elevenlabs.io/oauth/callback`
   * **OAuth Start URL**: `https://api.elevenlabs.io/oauth/start`
   * **Selected OAuth Scopes**: ये स्कोप जोड़ें:
     * **Full access (full)**
     * **Perform requests on your behalf at any time (refresh_token, offline_access)**
     * **Manage user data via api**
6. **Create** पर क्लिक करें
7. ऐप पेज पर **Settings** टैब खोलें, **OAuth Settings** पर जाएं और **Consumer Key and Secret** पर क्लिक करें
8. **Consumer Key** और **Consumer Secret** कॉपी करें — ऑथेंटिकेशन के लिए इनकी ज़रूरत होगी

#### OAuth Client Credentials फ़्लो कॉन्फ़िगर करें

> **Warning**
>
> Client Credentials Flow उन server-to-server इंटीग्रेशन के लिए सुझाया जाता है, जिनमें यूज़र
> इंटरैक्शन की ज़रूरत नहीं होती। सुनिश्चित करें कि आपके Salesforce एडमिन ने यह फ़्लो सक्षम किया है।

1. अपने External Client App में **Edit** पर क्लिक करें
2. **Enable Client Credentials Flow** चुनें — एक **Run As** फ़ील्ड दिखाई देगी
3. **Run As** में अपना एडमिन यूज़र या एक समर्पित सर्विस अकाउंट सेट करें — यही सभी API कॉल की अनुमतियां तय करता है
4. **Permitted Users** को **Admin approved users are pre-authorized** पर सेट करें
5. **Save** पर क्लिक करें

**Run As** यूज़र सभी API कॉल की अनुमतियां तय करता है। System Administrator प्रोफ़ाइल वाले यूज़र या ऐसी कस्टम प्रोफ़ाइल वाले यूज़र को चुनें, जिसके पास API एक्सेस और आपके एजेंट को चाहिए ऑब्जेक्ट्स (Contact, Lead, Account आदि) की अनुमति हो। यूज़र रिकॉर्ड में **API Enabled** अनुमति चुनी होनी चाहिए।

#### अपना Salesforce डोमेन ढूंढें

API कॉल के लिए आपका Salesforce डोमेन ज़रूरी है।

**तरीका 1: अपना मौजूदा URL देखें**

Salesforce में लॉग इन होने पर, अपने ब्राउज़र का एड्रेस बार देखें:

* **Lightning Experience**: `https://acme.lightning.force.com/`
* **My Domain**: `https://acme.my.salesforce.com/`

**तरीका 2: Setup > Company Information**

**Setup** > **Company Information** पर जाएं और अपना **My Domain** URL या Organization जानकारी देखें।

**तरीका 3: Setup > Domain Management**

**Setup** > **Domain Management** > **My Domain** पर जाएं। आपका डोमेन पेज के सबसे ऊपर दिखेगा।

**सामान्य डोमेन फ़ॉर्मैट:**

* `https://acme.my.salesforce.com` (My Domain)
* `https://acme.lightning.force.com` (Lightning)
* `https://acme.develop.my.salesforce.com` (Sandbox)

> **Note**
>
> ट्रेलिंग स्लैश के बिना पूरा डोमेन इस्तेमाल करें।

#### ElevenLabs में कनेक्ट करें

ElevenLabs इंटीग्रेशन सेटअप में अपना Salesforce **instance hostname** (जैसे, `acme.my.salesforce.com`), **Client ID** (Consumer Key), और **Client Secret** (Consumer Secret) दर्ज करें।

## डेमो वीडियो

> **Note**
>
> इस डेमो में पुराने webhook टूल्स का इस्तेमाल किया गया है। अगर आप नेटिव Salesforce इंटीग्रेशन इस्तेमाल कर रहे हैं, तो टूल्स
> अपने-आप कॉन्फ़िगर हो जाते हैं — मैन्युअल webhook सेटअप की ज़रूरत नहीं है।

## यह कैसे काम करता है

#### संक्षिप्त जानकारी

#### ग्राहक की शुरुआती पूछताछ

एजेंट ग्राहक की जानकारी जुटाता है और उनकी व्यावसायिक ज़रूरतों व मौजूदा चुनौतियों को समझने के लिए प्रासंगिक सवाल पूछता है।

#### ग्राहक डेटा खोज

एजेंट संपर्क, अकाउंट या लीड ढूंढने के लिए `salesforce_search_records` से मौजूदा रिकॉर्ड जांचता है। वह `salesforce_get_record` से पूरी जानकारी पाता है और इस जानकारी का इस्तेमाल बातचीत को व्यक्तिगत बनाने के लिए करता है।

#### लीड क्वालिफ़िकेशन

अगर ग्राहक नया है, तो एजेंट संपर्क जानकारी लेता है, उनकी व्यावसायिक ज़रूरतों का आकलन करता है और सही सेल्स प्रोसेस या रूटिंग तय करता है।

#### रिकॉर्ड बनाना

एजेंट `salesforce_create_record` का इस्तेमाल करके सही रिकॉर्ड (लीड, संपर्क या अवसर) बनाता है, ग्राहक को रिकॉर्ड बनने की पुष्टि करता है और आगे के चरण समझाता है।

#### विस्तृत सिस्टम प्रॉम्प्ट

```text
# Personality

You are a helpful sales assistant responsible for managing customer relationships and creating records in Salesforce using the available tools. Be friendly, professional, and consultative in your approach.

# Environment

You operate in a sales setting via voice or chat interface, where you engage with potential customers to gather information, check for existing CRM data, and create Salesforce records when necessary.

# Tone

Begin by asking about the customer's business needs and current challenges.

Then, ask relevant qualification questions to understand their requirements, one question at a time, and wait for their response before proceeding.

Once you have basic information about the customer, say you will check for any existing records in the system.

Use any existing information to personalize the conversation and avoid asking for data you already have.

When discussing opportunities, always reference them by name (e.g., "Q1 Enterprise Deal") rather than by ID.

# Goal

After checking existing records, qualify the customer by gathering:
- Company name and size
- Industry and business type
- Current challenges and pain points
- Budget and timeline information
- Decision-making authority

Once you have qualified the customer, gather the following contact details:
- Full name and job title
- Business email address (ensure it's formatted correctly)
- Phone number
- Company name and address

Read the email back to the customer to confirm accuracy.

Once all information is confirmed, explain that you will create a record in our system.

Create the appropriate record (Lead, Contact, or Opportunity) using the `salesforce_create_record` tool.

Thank the customer and explain the next steps in the sales process.

# Guardrails

- Always check for existing records before creating new ones.
- If the customer asks to proceed, do so with the existing information.
- Qualify leads appropriately based on their responses.
- Do not discuss topics outside of business solutions and sales.
- Always maintain professional communication.
- Protect customer privacy and handle data securely.

# Tools

- Call `salesforce_search_records` to look for existing contacts, accounts, or leads (always include Name fields and human-readable information in your SOQL queries).
- If found, call `salesforce_get_record` to get detailed information about the existing record.
- Use `salesforce_create_record` to generate Leads, Contacts, or Opportunities after qualification.
```

> **Tip**
>
> टूल ऑथराइज़ेशन को Workplace Auth Connections से मैनेज किया जा सकता है, जो token refresh को
> अपने-आप संभालता है। बातचीत की गुणवत्ता बेहतर बनाने के लिए टूल्स तकनीकी ID के बजाय आसानी से समझ आने वाले नाम और विवरण लौटाते हैं।

## टूल कॉन्फ़िगरेशन

तीन webhook टूल उपलब्ध हैं: `salesforce_search_records`, `salesforce_get_record`, और `salesforce_create_record`। हर टूल के लिए Workplace Auth Connection से ऑथराइज़ेशन कॉन्फ़िगर करें।

### ऑथराइज़ेशन - Workplace OAuth2 कनेक्शन

#### Workplace Auth Connections पर जाएं

अपने ElevenLabs डैशबोर्ड में **Agents** > **Workplace Auth Connections** पर जाएं और **Add Auth** पर क्लिक करें।

#### Salesforce कनेक्शन कॉन्फ़िगर करें

अपने Salesforce इंटीग्रेशन के लिए नीचे दिए फ़ील्ड भरें:

**Connection Name**: `Salesforce CRM`

**Client ID**

* External Client App से आपकी Consumer Key
* उदाहरण: `3MVG9JJlvRU3L4pRiOu8pQt5xXB4xGZGm0yW...`

**Client Secret**

* External Client App से आपका Consumer Secret
* उदाहरण: `1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF...`

**Token URL**

* आपके Salesforce डोमेन का OAuth token endpoint
* फ़ॉर्मैट: `https://{domain}.my.salesforce.com/services/oauth2/token`
* उदाहरण: `https://acme.my.salesforce.com/services/oauth2/token`

**Scopes (वैकल्पिक)**

* Salesforce API एक्सेस के लिए OAuth स्कोप
* सुझाया गया: `full, api, refresh_token`
* अपने External Client App के डिफ़ॉल्ट स्कोप इस्तेमाल करने के लिए खाली छोड़ दें

**Extra Parameters (JSON)**

* आपके सेटअप के लिए अतिरिक्त OAuth पैरामीटर
* Client Credentials फ़्लो का उदाहरण:

```json
{
  "grant_type": "client_credentials"
}
```

#### ऑथ कनेक्शन बनाएं

अपना कॉन्फ़िगरेशन जोड़ने के लिए **Create auth connection** पर क्लिक करें।

#### टूल कॉन्फ़िगरेशन में इस्तेमाल करें

कनेक्शन सफल होने पर, इसे सेव करें और **Authentication** सेक्शन में अपने webhook टूल कॉन्फ़िगरेशन में इसका संदर्भ दें।

> **Tip**
>
> Workplace Auth Connections token refresh को अपने-आप संभालता है, इसलिए आपको token को मैन्युअल रूप से मैनेज करने की ज़रूरत नहीं है।

### Webhook टूल कॉन्फ़िगरेशन

**Authentication** सेक्शन में हर टूल के लिए एक Workplace Auth Connection (OAuth2) जोड़ें। हर टूल का कॉन्फ़िगरेशन देखने के लिए नीचे दिए टैब इस्तेमाल करें।

#### salesforce_search_records

**नाम:** salesforce_search_records
**विवरण:** SOQL क्वेरी का इस्तेमाल करके Salesforce में मौजूदा रिकॉर्ड खोजता है। केवल ID नहीं, बल्कि Names समेत आसानी से समझ आने वाली जानकारी हमेशा लौटाता है।
**तरीका:** GET
**URL:** `https://acme.my.salesforce.com/services/data/v58.0/query/?q={soql_query}`

**हेडर्स:**

* **Content-Type:** `application/json`

**क्वेरी पैरामीटर:**

* **q:** SOQL क्वेरी स्ट्रिंग (जैसे, "SELECT Id, Name, Email FROM Contact WHERE Email = '[example@email.com](mailto:example@email.com)'")

**टूल JSON:**

```json
{
  "type": "webhook",
  "name": "salesforce_search_records",
  "description": "Searches for existing records in Salesforce using SOQL queries. Always returns human-readable names and details, not just IDs.",
  "api_schema": {
    "url": "https://acme.my.salesforce.com/services/data/v58.0/query/",
    "method": "GET",
    "path_params_schema": [],
    "query_params_schema": [
      {
        "id": "q",
        "type": "string",
        "description": "SOQL query string to search for records. Always include Name fields and other human-readable information. Example: SELECT Id, Name, Email, Phone, Company FROM Contact WHERE Email = 'customer@example.com'. For Opportunities, include: SELECT Id, Name, StageName, Amount, CloseDate, Account.Name FROM Opportunity",
        "dynamic_variable": "",
        "constant_value": "",
        "required": true,
        "value_type": "llm_prompt"
      }
    ],
    "request_body_schema": null,
    "request_headers": [
      {
        "type": "value",
        "name": "Content-Type",
        "value": "application/json"
      }
    ]
  },
  "response_timeout_secs": 30,
  "dynamic_variables": {
    "dynamic_variable_placeholders": {}
  }
}
```

#### salesforce_get_record

**नाम:** salesforce_get_record
**विवरण:** किसी खास Salesforce रिकॉर्ड की विस्तृत जानकारी पाता है।
**तरीका:** GET
**URL:** `https://acme.my.salesforce.com/services/data/v58.0/sobjects/{object_type}/{record_id}`

**हेडर्स:**

* **Content-Type:** `application/json`

**पाथ पैरामीटर:**

* **object_type:** Salesforce ऑब्जेक्ट टाइप (Contact, Lead, Account आदि)
* **record_id:** यूनीक Salesforce रिकॉर्ड ID

**टूल JSON:**

```json
{
  "type": "webhook",
  "name": "salesforce_get_record",
  "description": "Retrieves detailed information about a specific Salesforce record.",
  "api_schema": {
    "url": "https://acme.my.salesforce.com/services/data/v58.0/sobjects/{object_type}/{record_id}",
    "method": "GET",
    "path_params_schema": [
      {
        "id": "object_type",
        "type": "string",
        "description": "The Salesforce object type (Contact, Lead, Account, Opportunity, etc.)",
        "dynamic_variable": "",
        "constant_value": "",
        "required": true,
        "value_type": "llm_prompt"
      },
      {
        "id": "record_id",
        "type": "string",
        "description": "The unique Salesforce record ID obtained from search results",
        "dynamic_variable": "",
        "constant_value": "",
        "required": true,
        "value_type": "llm_prompt"
      }
    ],
    "query_params_schema": [],
    "request_body_schema": null,
    "request_headers": [
      {
        "type": "value",
        "name": "Content-Type",
        "value": "application/json"
      }
    ]
  },
  "response_timeout_secs": 30,
  "dynamic_variables": {
    "dynamic_variable_placeholders": {}
  }
}
```

#### salesforce_create_record

**नाम:** salesforce_create_record
**विवरण:** Salesforce में नया रिकॉर्ड बनाता है।
**तरीका:** POST
**URL:** `https://acme.my.salesforce.com/services/data/v58.0/sobjects/{object_type}/`

**हेडर्स:**

* **Content-Type:** `application/json`

**पाथ पैरामीटर:**

* **object_type:** बनाने के लिए Salesforce ऑब्जेक्ट टाइप (Lead, Contact, Account आदि)

**बॉडी पैरामीटर:**

* रिकॉर्ड फ़ील्ड और वैल्यू वाला **डायनेमिक JSON ऑब्जेक्ट**

**टूल JSON:**

```json
{
  "type": "webhook",
  "name": "salesforce_create_record",
  "description": "Creates a new record in Salesforce (Lead, Contact, Account, Opportunity, etc.)",
  "api_schema": {
    "url": "https://acme.my.salesforce.com/services/data/v58.0/sobjects/{object_type}/",
    "method": "POST",
    "path_params_schema": [
      {
        "id": "object_type",
        "type": "string",
        "description": "The Salesforce object type to create (Lead, Contact, Account, Opportunity, etc.)",
        "dynamic_variable": "",
        "constant_value": "",
        "required": true,
        "value_type": "llm_prompt"
      }
    ],
    "query_params_schema": [],
    "request_body_schema": {
      "id": "record_data",
      "type": "object",
      "description": "Record data for the new Salesforce record",
      "required": true,
      "properties": [
        {
          "id": "FirstName",
          "type": "string",
          "description": "First name of the contact or lead",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        },
        {
          "id": "LastName",
          "type": "string",
          "description": "Last name of the contact or lead",
          "dynamic_variable": "",
          "constant_value": "",
          "required": true,
          "value_type": "llm_prompt"
        },
        {
          "id": "Email",
          "type": "string",
          "description": "Email address. Must be properly formatted: user@domain.com",
          "dynamic_variable": "",
          "constant_value": "",
          "required": true,
          "value_type": "llm_prompt"
        },
        {
          "id": "Phone",
          "type": "string",
          "description": "Phone number of the contact or lead",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        },
        {
          "id": "Company",
          "type": "string",
          "description": "Company name (required for Lead object)",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        },
        {
          "id": "Title",
          "type": "string",
          "description": "Job title of the contact or lead",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        },
        {
          "id": "Industry",
          "type": "string",
          "description": "Industry of the lead's company",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        },
        {
          "id": "Description",
          "type": "string",
          "description": "Additional notes or description about the lead/contact",
          "dynamic_variable": "",
          "constant_value": "",
          "required": false,
          "value_type": "llm_prompt"
        }
      ]
    },
    "request_headers": [
      {
        "type": "value",
        "name": "Content-Type",
        "value": "application/json"
      }
    ]
  },
  "response_timeout_secs": 30,
  "dynamic_variables": {
    "dynamic_variable_placeholders": {}
  }
}
```

## सामान्य Salesforce ऑब्जेक्ट्स

| ऑब्जेक्ट        | उद्देश्य                                          | सामान्य फ़ील्ड                                               |
| --------------- | ------------------------------------------------- | ------------------------------------------------------------ |
| **Lead**        | ऐसे संभावित ग्राहक जो अभी क्वालिफ़ाई नहीं हुए हैं | FirstName, LastName, Email, Phone, Company, Industry, Status |
| **Contact**     | अकाउंट से जुड़े क्वालिफ़ाई किए गए व्यक्ति         | FirstName, LastName, Email, Phone, AccountId, Title          |
| **Account**     | संगठन या कंपनियां                                 | Name, Type, Industry, Phone, BillingAddress                  |
| **Opportunity** | प्रगति पर मौजूद सेल्स डील                         | Name, StageName, Amount, CloseDate, AccountId                |
| **Case**        | ग्राहक सेवा अनुरोध                                | Subject, Description, Status, Priority, ContactId            |

## सामान्य SOQL क्वेरीज़

अपने एजेंट के सिस्टम प्रॉम्प्ट को कस्टमाइज़ करते समय इन SOQL क्वेरीज़ को शुरुआती बिंदु के रूप में इस्तेमाल करें। सभी क्वेरीज़ तकनीकी IDs के बजाय इंसानों के पढ़ने लायक जानकारी लौटाती हैं:

### ईमेल से कॉन्टैक्ट खोजें

```sql
SELECT Id, Name, Email, Phone, Title, Account.Name, Account.Type FROM Contact WHERE Email = 'customer@example.com'
```

### ईमेल या फ़ोन से लीड खोजें

```sql
SELECT Id, Name, Email, Phone, Company, Industry, Status, LeadSource, Title FROM Lead WHERE Email = 'customer@example.com' OR Phone = '+1234567890'
```

### नाम से अकाउंट खोजें

```sql
SELECT Id, Name, Type, Industry, Phone, BillingCity, BillingState, Website FROM Account WHERE Name LIKE '%Company Name%'
```

### हाल की अवसरों की जानकारी खोजें

```sql
SELECT Id, Name, StageName, Amount, CloseDate, Account.Name, Account.Type, Owner.Name, Description FROM Opportunity WHERE CreatedDate = THIS_MONTH
```

### अकाउंट के आधार पर अवसर खोजें

```sql
SELECT Id, Name, StageName, Amount, CloseDate, Probability, NextStep, Owner.Name FROM Opportunity WHERE Account.Name LIKE '%Company Name%'
```

## इंटीग्रेशन टेस्टिंग

अपना External Client App सेट अप करने और इंटीग्रेशन कनेक्ट करने के बाद, प्रोडक्शन में डिप्लॉय करने से पहले इसकी जांच करें:

1. **खोज सुविधा**: अपने एजेंट से मौजूदा कॉन्टैक्ट खोजने के लिए कहें।
2. **रिकॉर्ड बनाना**: अपने एजेंट से नई लीड या कॉन्टैक्ट बनाने के लिए कहें।
3. **डेटा प्राप्त करना**: पुष्टि करें कि आपका एजेंट ग्राहकों की विस्तृत जानकारी प्राप्त कर सकता है।

## केस कमेंट ट्रिगर: Email-to-Case के लिए ईमेल जवाब

अगर आपने **Salesforce Case Comment** ट्रिगर (Service Cloud Cases के लिए एजेंट का ऑटो-रिस्पॉन्स) सक्षम किया है, तो कम-से-कम एक इनबाउंड ईमेल वाले Cases के जवाब ग्राहक को असली, थ्रेडेड ईमेल के रूप में भेजे जाते हैं — सिर्फ़ आंतरिक Case Comment के रूप में नहीं। यह इस बात पर आधारित है कि Case में कोई इनबाउंड ईमेल है या नहीं, न कि Case की **Origin** पिकलिस्ट वैल्यू पर। इसलिए, अगर आपका org सामान्य "Email" के बजाय "Email - Returns" जैसी कस्टमाइज़्ड Origin वैल्यू इस्तेमाल करता है, तब भी यह सही तरह से काम करता है। जिन Cases में कोई इनबाउंड ईमेल नहीं है, उनमें पहले की तरह कोई बदलाव किए बिना सार्वजनिक Case Comment पोस्ट होता रहेगा। ग्राहक के मूल ईमेल में CC किए गए सभी पते जवाब में भी अपने-आप CC हो जाते हैं, ठीक वैसे ही जैसे किसी मानव एजेंट का "Reply All" काम करता है — बस आपके org के Email-to-Case रूटिंग पते CC में जानबूझकर शामिल नहीं किए जाते, ताकि जवाब Email-to-Case द्वारा फिर से इनजेस्ट न हो और एजेंट अपने ही संदेश पर दोबारा ट्रिगर न हो।

ईमेल जवाब भेजने के लिए, सिर्फ़ Case Comments के लिए ज़रूरी सेटअप के अलावा कुछ और सेटअप चाहिए:

* **Run As** यूज़र के Profile या Permission Set में, इंटीग्रेशन के लिए पहले से ज़रूरी **API Enabled** अनुमति के अलावा, **Send Email** सिस्टम अनुमति भी सक्षम होनी चाहिए (`Setup` > `Users` > `Profiles`, System Permissions के अंतर्गत)।
* आपके org की **Email Deliverability** सेटिंग (`Setup` > `Email` > `Deliverability`) में बाहरी ईमेल की अनुमति होनी चाहिए — Sandboxes में डिफ़ॉल्ट रूप से यह प्रतिबंधित सेटिंग होती है, जो बिना सूचना के आउटबाउंड ईमेल ब्लॉक कर देती है।
* अगर आप चाहते हैं कि जवाब Run As यूज़र के अपने मेलबॉक्स के बजाय किसी सपोर्ट उपनाम से आएं, तो ट्रिगर पर **Org-Wide Email Address Id** फ़ील्ड को **Organization-Wide Email Address** के Id पर सेट करें (`Setup` > `Organization-Wide Addresses` > पते पर क्लिक करें > URL से Id कॉपी करें)। Run As यूज़र के अपने पते से भेजने के लिए इसे खाली छोड़ दें।
* ट्रिगर पर **Email-to-Case Routing Address(es)** फ़ील्ड को अपने org के Email-to-Case पते पर सेट करें (एक से अधिक पते होने पर कॉमा से अलग करें, `Setup` > `Email-to-Case`)। इसके बिना, इंटीग्रेशन ग्राहक के ईमेल के `To` पते से रूटिंग पते का अनुमान लगाने की कोशिश करता है। इसमें वे Cases छूट जाते हैं जिनमें आपका रूटिंग पता मुख्य प्राप्तकर्ता के बजाय सिर्फ़ CC में था — ऐसी स्थिति में जवाब में उसे फिर से CC करने पर एजेंट अपने ही संदेश पर दोबारा ट्रिगर हो जाएगा।

अगर ग्राहक के org में ये कॉन्फ़िगर नहीं हैं, तो ईमेल भेजने में विफलता की स्थिति में सार्वजनिक Case Comment पोस्ट किया जाता है, ताकि कोई जवाब बिना सूचना के छूट न जाए — लेकिन ऊपर दिया गया सेटअप पूरा होने तक ग्राहक को वह ईमेल से नहीं मिलेगा।

## सुरक्षा संबंधी बातें

* सभी API कॉल के लिए HTTPS एंडपॉइंट इस्तेमाल करें।
* सुनिश्चित करें कि Salesforce में सही फ़ील्ड-लेवल सुरक्षा कॉन्फ़िगर की गई है।
* Run As यूज़र की अनुमतियां तय करती हैं कि इंटीग्रेशन किस डेटा तक पहुंच सकता है — इन्हें उसी अनुसार सीमित रखें।
* API एक्सेस और उपयोग का नियमित रूप से ऑडिट करें।

## उपयोगी लिंक

* [Salesforce REST API दस्तावेज़](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/)
* [SOQL क्वेरी भाषा रेफरेंस](https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/)
* [External Client Apps और OAuth 2.0](https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm)
* [Salesforce सुरक्षा के सर्वोत्तम तरीके](https://help.salesforce.com/s/articleView?id=sf.security_overview.htm)