Salesforce Connector

Salesforce Connector

เชื่อมต่อ Salesforce CRM กับ Brevo ผ่าน Tajo สำหรับการซิงค์ผู้ติดต่อระดับองค์กร การจัดการลีด การติดตามโอกาส และระบบอัตโนมัติทางการตลาดที่ขับเคลื่อนด้วยข้อมูล CRM ของคุณ

ภาพรวม

คุณสมบัติค่า
แพลตฟอร์มSalesforce
หมวดหมู่CRM
ความซับซ้อนในการตั้งค่าขั้นสูง
การผสานรวมอย่างเป็นทางการใช่
ข้อมูลที่ซิงค์ผู้ติดต่อ ลีด บัญชี โอกาส เหตุการณ์
API Base URLhttps://yourInstance.salesforce.com/services/data/vXX.0

ฟีเจอร์

  • การซิงค์ผู้ติดต่อ/ลีดแบบสองทิศทาง - ซิงค์ผู้ติดต่อและลีด Salesforce กับรายการผู้ติดต่อ Brevo
  • การติดตามโอกาส - แมปขั้นตอนดีลและจำนวนเงินสำหรับการแบ่งกลุ่มตามรายได้
  • ลำดับชั้นบัญชี - ซิงค์บัญชีบริษัทสำหรับการตลาดตามบัญชีใน Brevo
  • การแมปอ็อบเจกต์แบบกำหนดเอง - แมป Salesforce custom objects กับแอตทริบิวต์และเหตุการณ์ Brevo
  • การซิงค์สมาชิกแคมเปญ - ซิงค์สมาชิกแคมเปญ Salesforce กับรายการ Brevo
  • การติดตามกิจกรรม - ซิงค์งาน เหตุการณ์ และกิจกรรมอีเมลสำหรับการให้คะแนนการมีส่วนร่วม
  • การสตรีมแบบเรียลไทม์ - ใช้ Salesforce Streaming API สำหรับการอัปเดตข้อมูลทันที
  • รองรับ SOQL query - กรองข้อมูลที่ซิงค์ด้วย SOQL queries แบบกำหนดเอง

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

  1. Salesforce org (ฉบับใดก็ได้ที่มีสิทธิ์เข้าถึง API)
  2. Connected App ที่กำหนดค่าใน Salesforce Setup
  3. เปิดใช้การเข้าถึง API สำหรับโปรไฟล์ผู้ใช้ Salesforce ของคุณ
  4. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
  5. บัญชี Tajo

การยืนยันตัวตน

OAuth 2.0 Web Server Flow (แนะนำ)

เหมาะที่สุดสำหรับการผสานรวมในการผลิตที่มีการอนุญาตจากผู้ใช้

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

สำหรับการผสานรวมระหว่างเซิร์ฟเวอร์โดยไม่ต้องมีการโต้ตอบจากผู้ใช้

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 กำหนดให้ต่อท้าย security token กับรหัสผ่านของคุณสำหรับ username-password flow รีเซ็ต 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

แมปกับแอตทริบิวต์ FIRSTNAME ใน Brevo

LastName optional
string

แมปกับแอตทริบิวต์ LASTNAME ใน Brevo

Phone optional
string

แมปกับแอตทริบิวต์ SMS สำหรับการส่งข้อความ WhatsApp/SMS

Account.Name optional
string

ชื่อบัญชี/บริษัทที่เกี่ยวข้อง

LeadSource optional
string

แหล่งที่มาการได้มาซึ่งลีด

StageName optional
string

ขั้นตอนโอกาสสำหรับการติดตามดีล

OwnerId optional
string

ตัวแทนขายที่ได้รับมอบหมายสำหรับการกำหนดเส้นทาง

การแมปฟิลด์แบบกำหนดเอง

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

API Endpoints

REST API Resources

เมธอดEndpointคำอธิบาย
GET/services/data/vXX.0/sobjects/ContactQuery ผู้ติดต่อ
POST/services/data/vXX.0/sobjects/Contactสร้างผู้ติดต่อ
PATCH/services/data/vXX.0/sobjects/Contact/{id}อัปเดตผู้ติดต่อ
GET/services/data/vXX.0/sobjects/LeadQuery ลีด
GET/services/data/vXX.0/sobjects/AccountQuery บัญชี
GET/services/data/vXX.0/sobjects/OpportunityQuery โอกาส
GET/services/data/vXX.0/query?q={SOQL}ดำเนิน SOQL query
POST/services/data/vXX.0/composite/sobjectsสร้าง/อัปเดตแบบ Batch

Bulk API

เมธอดEndpointคำอธิบาย
POST/services/data/vXX.0/jobs/ingestสร้าง bulk ingest job
PUT/services/data/vXX.0/jobs/ingest/{jobId}/batchesอัปโหลดข้อมูล batch
GET/services/data/vXX.0/jobs/ingest/{jobId}ตรวจสอบสถานะ job

Streaming API

Endpointคำอธิบาย
/cometd/XX.0CometD long-polling สำหรับเหตุการณ์แบบเรียลไทม์
PushTopicสมัครรับการเปลี่ยนแปลงบันทึกผ่าน SOQL-based topics
Change Data Captureสตรีมการเปลี่ยนแปลงระดับฟิลด์แบบละเอียด
Platform Eventsสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์แบบกำหนดเอง

เหตุการณ์

เหตุการณ์บันทึก (Change Data Capture)

เหตุการณ์ทริกเกอร์กรณีใช้งาน
ContactChangeEventสร้าง/อัปเดต/ลบผู้ติดต่อการซิงค์ผู้ติดต่อแบบเรียลไทม์
LeadChangeEventสร้าง/อัปเดต/แปลงลีดการติดตามวงจรชีวิตลีด
OpportunityChangeEventเปลี่ยนขั้นตอนโอกาสระบบอัตโนมัติไปป์ไลน์ดีล
AccountChangeEventแก้ไขบันทึกบัญชีการซิงค์ข้อมูลบริษัท

Platform Events

เหตุการณ์ทริกเกอร์กรณีใช้งาน
Lead_Converted__eแปลงลีดเป็นผู้ติดต่อการบ่มเพาะหลังการแปลง
Deal_Won__eโอกาสปิดสำเร็จโฟลว์การเริ่มต้นใช้งานลูกค้า
Deal_Lost__eโอกาสปิดไม่สำเร็จแคมเปญดึงลูกค้ากลับ

ตัวอย่างโค้ด

เริ่มต้น Connector

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
});

ซิงค์ผู้ติดต่อด้วยตัวกรอง 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
// }

การสตรีมแบบเรียลไทม์

// 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
}
});

ขีดจำกัดอัตรา

ขีดจำกัด Salesforce REST API ขึ้นอยู่กับฉบับและจำนวนใบอนุญาตของคุณ:

ฉบับคำขอ API ต่อ 24 ชั่วโมง
Developer15,000
Enterprise1,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000)
Unlimited5,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000)
Performance5,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000)

ขีดจำกัดเพิ่มเติม:

  • ขีดจำกัด Concurrent API: 25 คำขอที่ทำงานนาน
  • Bulk API: 15,000 batches ต่อ 24 ชั่วโมง
  • Streaming API: 2,000 เหตุการณ์ต่อวัน (สามารถเพิ่มได้)
  • Composite API: 25 subrequests ต่อ composite request

การตรวจสอบการใช้งาน API

ตรวจสอบการใช้งาน API ของคุณใน Salesforce Setup > System Overview Tajo ใช้ bulk API สำหรับการซิงค์ขนาดใหญ่เพื่อประหยัดขีดจำกัด API ของคุณ

การแก้ไขปัญหา

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
INVALID_SESSION_IDToken หมดอายุรีเฟรช OAuth token โดยอัตโนมัติ
REQUEST_LIMIT_EXCEEDEDถึงขีดจำกัด API รายวันใช้ Bulk API หรือลดความถี่ในการซิงค์
FIELD_INTEGRITY_EXCEPTIONฟิลด์ที่จำเป็นหายไปแมปฟิลด์ที่จำเป็นทั้งหมดในการกำหนดค่า
DUPLICATES_DETECTEDกฎรายการซ้ำใช้งานอยู่กำหนดค่าการตั้งค่าการจัดการรายการซ้ำ
INSUFFICIENT_ACCESSสิทธิ์อ็อบเจกต์ขาดหายให้สิทธิ์ API เข้าถึงในโปรไฟล์ Salesforce

โหมด Debug

เปิดใช้การบันทึกข้อมูลแบบละเอียด:

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

ทดสอบการเชื่อมต่อ

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

แนวทางปฏิบัติที่ดีที่สุด

  1. ใช้ Bulk API สำหรับการซิงค์ขนาดใหญ่ - เปลี่ยนเป็น Bulk API 2.0 สำหรับชุดข้อมูลที่มีมากกว่า 2,000 รายการ
  2. ใช้ Change Data Capture - ใช้ CDC สำหรับการซิงค์แบบเรียลไทม์แทนการ polling
  3. แมปเฉพาะฟิลด์ที่จำเป็น - ลดการใช้งาน API โดยซิงค์เฉพาะฟิลด์ที่จำเป็น
  4. จัดการการรีเฟรช token - ใช้ตรรกะการรีเฟรช OAuth token โดยอัตโนมัติ
  5. ใช้ composite requests - รวมการเรียก API ที่เกี่ยวข้องเพื่อลดจำนวนคำขอ
  6. ทดสอบใน sandbox ก่อน - ใช้ Salesforce sandbox org ก่อนการใช้งานจริง

ความปลอดภัย

  • OAuth 2.0 - การอนุญาตตามมาตรฐานอุตสาหกรรมพร้อมประเภทการอนุญาตหลายแบบ
  • ข้อจำกัด IP - Salesforce รองรับช่วง IP การเข้าสู่ระบบและการตั้งค่า IP ที่เชื่อถือได้
  • TLS 1.2+ - การสื่อสาร API ทั้งหมดเข้ารหัสด้วย TLS 1.2 ขั้นต่ำ
  • ความปลอดภัยระดับฟิลด์ - การควบคุมการเข้าถึงฟิลด์แบบละเอียดต่อโปรไฟล์
  • การจัดการ Session - การหมดเวลา session ที่กำหนดค่าได้และขีดจำกัด session พร้อมกัน

แหล่งข้อมูลที่เกี่ยวข้อง

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

ผู้ช่วย AI

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย

เริ่มต้นฟรีกับ Brevo