Konektor Salesforce
Status konektor: Direncanakan Belum dibangun. Tajo belum menjalankan konektor ini.
Ilustrasi · data contoh
Contoh sinkronisasi
Sumber
Salesforce
Status konektor: Direncanakan
Tujuan
Alat Anda yang lain
Status konektor: Alat khusus
Pemetaan field
| Field sumber | Field tujuan | Nilai contoh |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Susun draf
- Tinjau satu data
- Setujui versi ini
Status berlaku untuk masing-masing konektor dan tidak menjamin sinkronisasi ini siap. Field ini hanya ilustrasi. Periksa skema dan izin sebenarnya sebelum sinkronisasi berjalan.
Hubungkan Salesforce CRM Anda ke Brevo melalui Tajo untuk sinkronisasi kontak kelas enterprise, pengelolaan lead, pelacakan opportunity, dan otomatisasi marketing yang digerakkan oleh data CRM Anda.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Salesforce |
| Kategori | CRM |
| Kompleksitas setup | Lanjutan |
| Integrasi resmi | Tidak |
| Data yang disinkronkan | Kontak, Lead, Akun, Opportunity, Event |
| API Base URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Fitur
- Sinkronisasi kontak/lead dua arah - Sinkronkan kontak dan lead Salesforce dengan daftar kontak Brevo
- Pelacakan opportunity - Petakan tahap dan nilai deal untuk segmentasi berbasis pendapatan
- Hierarki akun - Sinkronkan akun perusahaan untuk account-based marketing di Brevo
- Pemetaan custom object - Petakan custom object Salesforce ke atribut dan event Brevo
- Sinkronisasi campaign member - Sinkronkan campaign member Salesforce dengan daftar Brevo
- Pelacakan aktivitas - Sinkronkan task, event, dan aktivitas email untuk penilaian engagement
- Streaming real-time - Gunakan Salesforce Streaming API untuk pembaruan data seketika
- Dukungan kueri SOQL - Saring data yang disinkronkan dengan kueri SOQL kustom
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Org Salesforce (edisi apa pun yang memiliki akses API)
- Connected App yang dikonfigurasi di Salesforce Setup
- Akses API yang aktif untuk profil pengguna Salesforce Anda
- Akun Brevo dengan akses API
- Akun Tajo
Autentikasi
OAuth 2.0 Web Server Flow (direkomendasikan)
Paling cocok untuk integrasi produksi yang memerlukan otorisasi pengguna.
# 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
Untuk integrasi server-ke-server tanpa interaksi pengguna.
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}"Security token
Salesforce mewajibkan Anda menambahkan security token di belakang password untuk username-password flow. Reset token Anda melalui Setup > My Personal Information > Reset My Security Token.
Konfigurasi
Setup dasar
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: 17Pemetaan field
Petakan field Salesforce ke atribut kontak Brevo:
Pemetaan Bawaan
| Parameter | Type | Description |
|---|---|---|
Email required | string | Email kontak/lead (pengenal unik untuk Brevo) |
FirstName optional | string | Dipetakan ke atribut FIRSTNAME di Brevo |
LastName optional | string | Dipetakan ke atribut LASTNAME di Brevo |
Phone optional | string | Dipetakan ke atribut SMS untuk pesan WhatsApp/SMS |
Account.Name optional | string | Nama akun/perusahaan yang terkait |
LeadSource optional | string | Sumber akuisisi lead |
StageName optional | string | Tahap opportunity untuk pelacakan deal |
OwnerId optional | string | Sales rep yang ditugaskan untuk routing |
Pemetaan field kustom
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_TIEREndpoint API
Resource REST API
| Method | Endpoint | Deskripsi |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Mengkueri kontak |
POST | /services/data/vXX.0/sobjects/Contact | Membuat kontak |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Memperbarui kontak |
GET | /services/data/vXX.0/sobjects/Lead | Mengkueri lead |
GET | /services/data/vXX.0/sobjects/Account | Mengkueri akun |
GET | /services/data/vXX.0/sobjects/Opportunity | Mengkueri opportunity |
GET | /services/data/vXX.0/query?q={SOQL} | Menjalankan kueri SOQL |
POST | /services/data/vXX.0/composite/sobjects | Membuat/memperbarui secara batch |
Bulk API
| Method | Endpoint | Deskripsi |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Membuat job bulk ingest |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Mengunggah data batch |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Memeriksa status job |
Streaming API
| Endpoint | Deskripsi |
|---|---|
/cometd/XX.0 | Long-polling CometD untuk event real-time |
| PushTopic | Berlangganan perubahan record melalui topik berbasis SOQL |
| Change Data Capture | Streaming perubahan terperinci pada level field |
| Platform Events | Arsitektur event-driven kustom |
Event
Event record (Change Data Capture)
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
ContactChangeEvent | Kontak dibuat/diperbarui/dihapus | Sinkronisasi kontak real-time |
LeadChangeEvent | Lead dibuat/diperbarui/dikonversi | Pelacakan lifecycle lead |
OpportunityChangeEvent | Tahap opportunity berubah | Otomatisasi pipeline deal |
AccountChangeEvent | Record akun diubah | Sinkronisasi data perusahaan |
Platform Events
| Event | Pemicu | Kasus penggunaan |
|---|---|---|
Lead_Converted__e | Lead dikonversi menjadi kontak | Nurture pasca-konversi |
Deal_Won__e | Opportunity closed-won | Alur onboarding pelanggan |
Deal_Lost__e | Opportunity closed-lost | Kampanye win-back |
Contoh kode
Inisialisasi konektor
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});Menyinkronkan kontak dengan filter 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// }Streaming real-time
// 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 }});Rate limit
Batas Salesforce REST API bergantung pada edisi dan jumlah lisensi Anda:
| Edisi | Request API per 24 jam |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 per lisensi pengguna (minimal 15.000) |
| Unlimited | 5.000 per lisensi pengguna (minimal 15.000) |
| Performance | 5.000 per lisensi pengguna (minimal 15.000) |
Batasan tambahan:
- Batas API bersamaan: 25 request berdurasi panjang
- Bulk API: 15.000 batch per 24 jam
- Streaming API: 2.000 event per hari (dapat ditingkatkan)
- Composite API: 25 subrequest per composite request
Pemantauan penggunaan API
Pantau penggunaan API Anda di Salesforce Setup > System Overview. Tajo menggunakan bulk API untuk sinkronisasi besar agar batas API Anda tetap hemat.
Pemecahan masalah
Masalah umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| INVALID_SESSION_ID | Token kedaluwarsa | Segarkan token OAuth secara otomatis |
| REQUEST_LIMIT_EXCEEDED | Batas API harian tercapai | Gunakan Bulk API atau kurangi frekuensi sinkronisasi |
| FIELD_INTEGRITY_EXCEPTION | Field wajib tidak ada | Petakan seluruh field wajib dalam konfigurasi |
| DUPLICATES_DETECTED | Aturan duplikat aktif | Konfigurasikan preferensi penanganan duplikat |
| INSUFFICIENT_ACCESS | Izin objek kurang | Berikan akses API pada profil Salesforce |
Mode debug
Aktifkan logging terperinci:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueUji koneksi
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledPraktik terbaik
- Gunakan Bulk API untuk sinkronisasi besar - Beralih ke Bulk API 2.0 untuk dataset di atas 2.000 record
- Terapkan Change Data Capture - Gunakan CDC untuk sinkronisasi real-time alih-alih polling
- Petakan hanya field yang diperlukan - Kurangi penggunaan API dengan menyinkronkan hanya field yang dibutuhkan
- Tangani refresh token - Terapkan logika refresh token OAuth otomatis
- Gunakan composite request - Gabungkan panggilan API terkait untuk menekan jumlah request
- Uji di sandbox terlebih dahulu - Gunakan org sandbox Salesforce sebelum penerapan ke produksi
Keamanan
- OAuth 2.0 - Otorisasi standar industri dengan beragam grant type
- Pembatasan IP - Salesforce mendukung rentang IP login dan pengaturan trusted IP
- TLS 1.2+ - Seluruh komunikasi API dienkripsi dengan TLS minimal 1.2
- Keamanan level field - Kontrol akses field yang granular per profil
- Manajemen sesi - Batas waktu sesi dan jumlah sesi bersamaan yang dapat dikonfigurasi