Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

Konektor Salesforce

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

PropertiNilai
PlatformSalesforce
KategoriCRM
Kompleksitas setupLanjutan
Integrasi resmiYa
Data yang disinkronkanKontak, Lead, Akun, Opportunity, Event
API Base URLhttps://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:

  1. Org Salesforce (edisi apa pun yang memiliki akses API)
  2. Connected App yang dikonfigurasi di Salesforce Setup
  3. Akses API yang aktif untuk profil pengguna Salesforce Anda
  4. Akun Brevo dengan akses API
  5. Akun Tajo

Autentikasi

OAuth 2.0 Web Server Flow (direkomendasikan)

Paling cocok untuk integrasi produksi yang memerlukan otorisasi pengguna.

Terminal window
# Step 1: Authorize
https://login.salesforce.com/services/oauth2/authorize?
response_type=code&
client_id={consumer_key}&
redirect_uri={callback_url}
# Step 2: Exchange code for tokens
curl -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.

Terminal window
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: 17

Pemetaan 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_TIER

Endpoint API

Resource REST API

MethodEndpointDeskripsi
GET/services/data/vXX.0/sobjects/ContactMengkueri kontak
POST/services/data/vXX.0/sobjects/ContactMembuat kontak
PATCH/services/data/vXX.0/sobjects/Contact/{id}Memperbarui kontak
GET/services/data/vXX.0/sobjects/LeadMengkueri lead
GET/services/data/vXX.0/sobjects/AccountMengkueri akun
GET/services/data/vXX.0/sobjects/OpportunityMengkueri opportunity
GET/services/data/vXX.0/query?q={SOQL}Menjalankan kueri SOQL
POST/services/data/vXX.0/composite/sobjectsMembuat/memperbarui secara batch

Bulk API

MethodEndpointDeskripsi
POST/services/data/vXX.0/jobs/ingestMembuat job bulk ingest
PUT/services/data/vXX.0/jobs/ingest/{jobId}/batchesMengunggah data batch
GET/services/data/vXX.0/jobs/ingest/{jobId}Memeriksa status job

Streaming API

EndpointDeskripsi
/cometd/XX.0Long-polling CometD untuk event real-time
PushTopicBerlangganan perubahan record melalui topik berbasis SOQL
Change Data CaptureStreaming perubahan terperinci pada level field
Platform EventsArsitektur event-driven kustom

Event

Event record (Change Data Capture)

EventPemicuKasus penggunaan
ContactChangeEventKontak dibuat/diperbarui/dihapusSinkronisasi kontak real-time
LeadChangeEventLead dibuat/diperbarui/dikonversiPelacakan lifecycle lead
OpportunityChangeEventTahap opportunity berubahOtomatisasi pipeline deal
AccountChangeEventRecord akun diubahSinkronisasi data perusahaan

Platform Events

EventPemicuKasus penggunaan
Lead_Converted__eLead dikonversi menjadi kontakNurture pasca-konversi
Deal_Won__eOpportunity closed-wonAlur onboarding pelanggan
Deal_Lost__eOpportunity closed-lostKampanye 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 Salesforce
await 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 Salesforce
await 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 status
const 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 Capture
await 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:

EdisiRequest API per 24 jam
Developer15.000
Enterprise1.000 per lisensi pengguna (minimal 15.000)
Unlimited5.000 per lisensi pengguna (minimal 15.000)
Performance5.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

MasalahPenyebabSolusi
INVALID_SESSION_IDToken kedaluwarsaSegarkan token OAuth secara otomatis
REQUEST_LIMIT_EXCEEDEDBatas API harian tercapaiGunakan Bulk API atau kurangi frekuensi sinkronisasi
FIELD_INTEGRITY_EXCEPTIONField wajib tidak adaPetakan seluruh field wajib dalam konfigurasi
DUPLICATES_DETECTEDAturan duplikat aktifKonfigurasikan preferensi penanganan duplikat
INSUFFICIENT_ACCESSIzin objek kurangBerikan akses API pada profil Salesforce

Mode debug

Aktifkan logging terperinci:

connectors:
salesforce:
debug: true
log_level: verbose
log_api_calls: true

Uji koneksi

Terminal window
tajo connectors test salesforce
# ✓ OAuth token valid
# ✓ Contacts accessible
# ✓ Leads accessible
# ✓ Accounts accessible
# ✓ Opportunities accessible
# ✓ Bulk API enabled

Praktik terbaik

  1. Gunakan Bulk API untuk sinkronisasi besar - Beralih ke Bulk API 2.0 untuk dataset di atas 2.000 record
  2. Terapkan Change Data Capture - Gunakan CDC untuk sinkronisasi real-time alih-alih polling
  3. Petakan hanya field yang diperlukan - Kurangi penggunaan API dengan menyinkronkan hanya field yang dibutuhkan
  4. Tangani refresh token - Terapkan logika refresh token OAuth otomatis
  5. Gunakan composite request - Gabungkan panggilan API terkait untuk menekan jumlah request
  6. 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

Sumber terkait

Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

deteksi otomatis
Asisten AI

Halo! Tanyakan apa saja tentang dokumentasi.