Salesforce कनेक्टर
Salesforce कनेक्टर
एंटरप्राइज़-ग्रेड कॉन्टैक्ट सिंक्रोनाइज़ेशन, लीड प्रबंधन, अवसर ट्रैकिंग, और अपने CRM डेटा द्वारा संचालित मार्केटिंग ऑटोमेशन के लिए Tajo के माध्यम से अपने Salesforce CRM को Brevo से कनेक्ट करें।
अवलोकन
| गुण | मान |
|---|---|
| प्लेटफ़ॉर्म | Salesforce |
| श्रेणी | CRM |
| सेटअप जटिलता | उन्नत |
| आधिकारिक इंटीग्रेशन | हां |
| सिंक किया गया डेटा | कॉन्टैक्ट्स, लीड्स, अकाउंट्स, अवसर, इवेंट्स |
| API Base URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
विशेषताएं
- द्विदिशीय कॉन्टैक्ट/लीड सिंक - Salesforce कॉन्टैक्ट्स और लीड्स को Brevo कॉन्टैक्ट लिस्ट्स के साथ सिंक करें
- अवसर ट्रैकिंग - राजस्व-आधारित सेगमेंटेशन के लिए डील स्टेज और राशि मैप करें
- अकाउंट पदानुक्रम - Brevo में अकाउंट-आधारित मार्केटिंग के लिए कंपनी अकाउंट्स सिंक करें
- कस्टम ऑब्जेक्ट मैपिंग - Salesforce कस्टम ऑब्जेक्ट्स को Brevo एट्रिब्यूट्स और इवेंट्स में मैप करें
- अभियान सदस्य सिंक - Salesforce अभियान सदस्यों को Brevo लिस्ट्स के साथ सिंक करें
- गतिविधि ट्रैकिंग - एंगेजमेंट स्कोरिंग के लिए टास्क, इवेंट, और ईमेल गतिविधियों को सिंक करें
- रीयल-टाइम स्ट्रीमिंग - तत्काल डेटा अपडेट के लिए Salesforce Streaming API का उपयोग करें
- SOQL क्वेरी समर्थन - कस्टम SOQL क्वेरीज़ के साथ सिंक किए गए डेटा को फ़िल्टर करें
पूर्वावश्यकताएं
शुरू करने से पहले, सुनिश्चित करें कि आपके पास है:
- एक Salesforce org (API एक्सेस वाला कोई भी संस्करण)
- Salesforce Setup में कॉन्फ़िगर किया गया एक Connected App
- आपके Salesforce उपयोगकर्ता प्रोफ़ाइल के लिए API एक्सेस सक्षम
- API एक्सेस वाला एक Brevo खाता
- एक Tajo खाता
प्रमाणीकरण
OAuth 2.0 Web Server Flow (अनुशंसित)
उपयोगकर्ता प्राधिकरण के साथ प्रोडक्शन इंटीग्रेशन्स के लिए सबसे अच्छा।
# Step 1: Authorizehttps://login.salesforce.com/services/oauth2/authorize? response_type=code& client_id={consumer_key}& redirect_uri={callback_url}
# Step 2: Exchange code for tokenscurl -X POST https://login.salesforce.com/services/oauth2/token \ -d "grant_type=authorization_code" \ -d "code={auth_code}" \ -d "client_id={consumer_key}" \ -d "client_secret={consumer_secret}" \ -d "redirect_uri={callback_url}"Username-Password Flow
बिना उपयोगकर्ता इंटरैक्शन वाले सर्वर-टू-सर्वर इंटीग्रेशन्स के लिए।
curl -X POST https://login.salesforce.com/services/oauth2/token \ -d "grant_type=password" \ -d "client_id={consumer_key}" \ -d "client_secret={consumer_secret}" \ -d "username={username}" \ -d "password={password}{security_token}"सुरक्षा टोकन
Salesforce को username-password flow के लिए आपके पासवर्ड में आपका security token जोड़ने की आवश्यकता होती है। Setup > My Personal Information > Reset My Security Token से अपना टोकन रीसेट करें।
कॉन्फ़िगरेशन
बुनियादी सेटअप
connectors: salesforce: enabled: true instance_url: "https://yourorg.my.salesforce.com" api_version: "v59.0" auth: type: oauth2 consumer_key: "${SF_CONSUMER_KEY}" consumer_secret: "${SF_CONSUMER_SECRET}" refresh_token: "${SF_REFRESH_TOKEN}"
# Data sync options sync: contacts: true leads: true accounts: true opportunities: true campaigns: true
# Sync direction direction: salesforce_to_brevo
# Brevo list assignment lists: all_leads: 15 qualified_leads: 16 customers: 17फ़ील्ड मैपिंग
Salesforce फ़ील्ड्स को Brevo कॉन्टैक्ट एट्रिब्यूट्स में मैप करें:
डिफ़ॉल्ट मैपिंग्स
| Parameter | Type | Description |
|---|---|---|
Email required | string | कॉन्टैक्ट/लीड ईमेल (Brevo के लिए विशिष्ट पहचानकर्ता) |
FirstName optional | string | Brevo में FIRSTNAME एट्रिब्यूट से मैप होता है |
LastName optional | string | Brevo में LASTNAME एट्रिब्यूट से मैप होता है |
Phone optional | string | WhatsApp/SMS मैसेजिंग के लिए SMS एट्रिब्यूट से मैप होता है |
Account.Name optional | string | संबद्ध अकाउंट/कंपनी का नाम |
LeadSource optional | string | लीड अधिग्रहण स्रोत |
StageName optional | string | डील ट्रैकिंग के लिए अवसर स्टेज |
OwnerId optional | string | रूटिंग के लिए असाइन किया गया sales rep |
कस्टम फ़ील्ड मैपिंग
field_mapping: # Standard fields Email: email FirstName: FIRSTNAME LastName: LASTNAME Phone: SMS
# CRM fields LeadSource: LEAD_SOURCE Lead_Score__c: LEAD_SCORE Account.Name: COMPANY_NAME Account.Industry: INDUSTRY
# Opportunity fields Amount: DEAL_VALUE StageName: DEAL_STAGE CloseDate: EXPECTED_CLOSE_DATE
# Custom fields Preferred_Channel__c: PREFERRED_CHANNEL Customer_Tier__c: VIP_TIERAPI एंडपॉइंट्स
REST API संसाधन
| मेथड | एंडपॉइंट | विवरण |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | कॉन्टैक्ट्स क्वेरी करें |
POST | /services/data/vXX.0/sobjects/Contact | एक कॉन्टैक्ट बनाएं |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | एक कॉन्टैक्ट अपडेट करें |
GET | /services/data/vXX.0/sobjects/Lead | लीड्स क्वेरी करें |
GET | /services/data/vXX.0/sobjects/Account | अकाउंट्स क्वेरी करें |
GET | /services/data/vXX.0/sobjects/Opportunity | अवसर क्वेरी करें |
GET | /services/data/vXX.0/query?q={SOQL} | SOQL क्वेरी निष्पादित करें |
POST | /services/data/vXX.0/composite/sobjects | बैच क्रिएट/अपडेट |
Bulk API
| मेथड | एंडपॉइंट | विवरण |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | बल्क ingest जॉब बनाएं |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | बैच डेटा अपलोड करें |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | जॉब स्थिति जांचें |
Streaming API
| एंडपॉइंट | विवरण |
|---|---|
/cometd/XX.0 | रीयल-टाइम इवेंट्स के लिए CometD long-polling |
| PushTopic | SOQL-आधारित विषयों के माध्यम से रिकॉर्ड परिवर्तनों की सदस्यता लें |
| Change Data Capture | फाइन-ग्रेन्ड फ़ील्ड-स्तरीय परिवर्तनों को स्ट्रीम करें |
| Platform Events | कस्टम इवेंट-चालित आर्किटेक्चर |
इवेंट्स
रिकॉर्ड इवेंट्स (Change Data Capture)
| इवेंट | ट्रिगर | उपयोग मामला |
|---|---|---|
ContactChangeEvent | कॉन्टैक्ट बनाया/अपडेट/हटाया गया | रीयल-टाइम कॉन्टैक्ट सिंक |
LeadChangeEvent | लीड बनाया/अपडेट/कन्वर्ट किया गया | लीड लाइफसाइकल ट्रैकिंग |
OpportunityChangeEvent | अवसर स्टेज बदला | डील पाइपलाइन ऑटोमेशन |
AccountChangeEvent | अकाउंट रिकॉर्ड संशोधित | कंपनी डेटा सिंक |
Platform Events
| इवेंट | ट्रिगर | उपयोग मामला |
|---|---|---|
Lead_Converted__e | लीड कॉन्टैक्ट में कन्वर्ट | पोस्ट-कन्वर्शन नर्चर |
Deal_Won__e | अवसर closed-won | ग्राहक ऑनबोर्डिंग फ़्लो |
Deal_Lost__e | अवसर closed-lost | Win-back अभियान |
कोड उदाहरण
कनेक्टर प्रारंभ करें
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Salesforceawait tajo.connectors.connect('salesforce', { instanceUrl: 'https://yourorg.my.salesforce.com', consumerKey: process.env.SF_CONSUMER_KEY, consumerSecret: process.env.SF_CONSUMER_SECRET, refreshToken: process.env.SF_REFRESH_TOKEN});SOQL फ़िल्टर के साथ कॉन्टैक्ट सिंक
// Sync only qualified leads from Salesforceawait tajo.connectors.sync('salesforce', { type: 'filtered', resources: ['leads'], filter: "SELECT Id, Email, FirstName, LastName, LeadScore__c FROM Lead WHERE Status = 'Qualified' AND Email != null", brevoListId: 16});
// Check sync statusconst status = await tajo.connectors.status('salesforce');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 18400,// leadsSynced: 7200,// opportunitiesSynced: 3100// }रीयल-टाइम स्ट्रीमिंग
// Subscribe to Salesforce Change Data Captureawait tajo.connectors.stream('salesforce', { channels: [ '/data/ContactChangeEvent', '/data/LeadChangeEvent', '/data/OpportunityChangeEvent' ], handler: async (event) => { console.log(`Change detected: ${event.entity} ${event.changeType}`); // Automatically synced to Brevo by Tajo }});दर सीमाएं
Salesforce REST API सीमाएं आपके संस्करण और लाइसेंस गणना पर निर्भर करती हैं:
| संस्करण | प्रति 24 घंटे API अनुरोध |
|---|---|
| Developer | 15,000 |
| Enterprise | 1,000 प्रति user license (न्यूनतम 15,000) |
| Unlimited | 5,000 प्रति user license (न्यूनतम 15,000) |
| Performance | 5,000 प्रति user license (न्यूनतम 15,000) |
अतिरिक्त सीमाएं:
- समवर्ती API सीमा: 25 लंबे समय तक चलने वाले अनुरोध
- Bulk API: प्रति 24 घंटे 15,000 बैच
- Streaming API: प्रति दिन 2,000 इवेंट्स (बढ़ाया जा सकता है)
- Composite API: प्रति composite request 25 subrequest
API उपयोग निगरानी
Salesforce Setup > System Overview में अपने API उपयोग की निगरानी करें। Tajo आपकी API सीमाओं को संरक्षित करने के लिए बड़े सिंक के लिए bulk API का उपयोग करता है।
समस्या निवारण
सामान्य समस्याएं
| समस्या | कारण | समाधान |
|---|---|---|
| INVALID_SESSION_ID | टोकन समाप्त | OAuth टोकन स्वचालित रूप से रीफ्रेश करें |
| REQUEST_LIMIT_EXCEEDED | दैनिक API सीमा पार | Bulk API का उपयोग करें या सिंक आवृत्ति कम करें |
| FIELD_INTEGRITY_EXCEPTION | आवश्यक फ़ील्ड गायब | कॉन्फ़िगरेशन में सभी आवश्यक फ़ील्ड मैप करें |
| DUPLICATES_DETECTED | डुप्लिकेट नियम सक्रिय | डुप्लिकेट हैंडलिंग प्राथमिकताएं कॉन्फ़िगर करें |
| INSUFFICIENT_ACCESS | ऑब्जेक्ट अनुमतियां गायब | Salesforce profile में API एक्सेस प्रदान करें |
डीबग मोड
विस्तृत लॉगिंग सक्षम करें:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueकनेक्शन परीक्षण करें
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledसर्वोत्तम प्रथाएं
- बड़े सिंक के लिए Bulk API का उपयोग करें - 2,000 से अधिक रिकॉर्ड्स के डेटासेट के लिए Bulk API 2.0 पर स्विच करें
- Change Data Capture लागू करें - पोलिंग के बजाय रीयल-टाइम सिंक के लिए CDC का उपयोग करें
- केवल आवश्यक फ़ील्ड्स मैप करें - केवल आवश्यक फ़ील्ड्स सिंक करके API उपयोग कम करें
- टोकन रीफ्रेश हैंडल करें - स्वचालित OAuth टोकन रीफ्रेश लॉजिक लागू करें
- composite requests का उपयोग करें - अनुरोध संख्या कम करने के लिए संबंधित API कॉल्स को संयोजित करें
- पहले sandbox में परीक्षण करें - प्रोडक्शन डिप्लॉयमेंट से पहले Salesforce sandbox org का उपयोग करें
सुरक्षा
- OAuth 2.0 - कई grant types के साथ इंडस्ट्री-स्टैंडर्ड प्राधिकरण
- IP प्रतिबंध - Salesforce login IP ranges और trusted IP सेटिंग्स का समर्थन करता है
- TLS 1.2+ - न्यूनतम TLS 1.2 के साथ एन्क्रिप्टेड सभी API संचार
- फ़ील्ड-स्तरीय सुरक्षा - प्रति profile ग्रैन्युलर फ़ील्ड एक्सेस नियंत्रण
- सत्र प्रबंधन - कॉन्फ़िगर करने योग्य सत्र टाइमआउट और समवर्ती सत्र सीमाएं