Salesforce Connector
Salesforce Connector
Forbind dit Salesforce CRM med Brevo via Tajo for kontaktsynkronisering på enterprise-niveau, lead-håndtering, opportunity-sporing og marketingautomatisering drevet af dine CRM-data.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | Salesforce |
| Kategori | CRM |
| Opsætningskompleksitet | Avanceret |
| Officiel integration | Ja |
| Synkroniserede data | Kontakter, leads, accounts, opportunities, hændelser |
| API-base-URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funktioner
- Tovejs kontakt-/lead-synkronisering - Synkronisér Salesforce-kontakter og leads med Brevo-kontaktlister
- Opportunity-sporing - Kortlæg aftalestadier og beløb til omsætningsbaseret segmentering
- Account-hierarki - Synkronisér virksomhedsaccounts til kontobaseret marketing i Brevo
- Mapping af brugerdefinerede objekter - Kortlæg Salesforce-brugerdefinerede objekter til Brevo-attributter og -hændelser
- Kampagnemedlemssynkronisering - Synkronisér Salesforce-kampagnemedlemmer med Brevo-lister
- Aktivitetssporing - Synkronisér opgaver, hændelser og e-mailaktiviteter til engagementscoring
- Streaming i realtid - Brug Salesforce Streaming API for øjeblikkelige dataopdateringer
- Understøttelse af SOQL-forespørgsler - Filtrér synkroniserede data med brugerdefinerede SOQL-forespørgsler
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En Salesforce-organisation (enhver udgave med API-adgang)
- En Connected App konfigureret i Salesforce Setup
- API-adgang aktiveret for din Salesforce-brugerprofil
- En Brevo-konto med API-adgang
- En Tajo-konto
Autentifikation
OAuth 2.0 Web Server Flow (anbefalet)
Bedst til produktionsintegrationer med brugerautorisation.
# 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
Til server-til-server-integrationer uden brugerinteraktion.
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}"Sikkerhedstoken
Salesforce kræver, at du tilføjer dit sikkerhedstoken til din adgangskode i username-password-flowet. Nulstil dit token fra Setup > My Personal Information > Reset My Security Token.
Konfiguration
Grundlæggende opsætning
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: 17Feltmapping
Kortlæg Salesforce-felter til Brevo-kontaktattributter:
Standardmappinger
| Parameter | Type | Description |
|---|---|---|
Email required | string | Kontakt-/lead-e-mail (unik identifikator for Brevo) |
FirstName optional | string | Kortlægges til FIRSTNAME-attribut i Brevo |
LastName optional | string | Kortlægges til LASTNAME-attribut i Brevo |
Phone optional | string | Kortlægges til SMS-attribut til WhatsApp/SMS-beskeder |
Account.Name optional | string | Tilknyttet account-/virksomhedsnavn |
LeadSource optional | string | Lead-anskaffelseskilde |
StageName optional | string | Opportunity-stadie til aftalesporing |
OwnerId optional | string | Tildelt sælger til routing |
Mapping af brugerdefinerede felter
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-endpoints
REST API-ressourcer
| Metode | Endpoint | Beskrivelse |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Forespørg kontakter |
POST | /services/data/vXX.0/sobjects/Contact | Opret en kontakt |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Opdatér en kontakt |
GET | /services/data/vXX.0/sobjects/Lead | Forespørg leads |
GET | /services/data/vXX.0/sobjects/Account | Forespørg accounts |
GET | /services/data/vXX.0/sobjects/Opportunity | Forespørg opportunities |
GET | /services/data/vXX.0/query?q={SOQL} | Udfør SOQL-forespørgsel |
POST | /services/data/vXX.0/composite/sobjects | Batch-opret/opdatér |
Bulk API
| Metode | Endpoint | Beskrivelse |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Opret bulk ingest-job |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Upload batch-data |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Tjek jobstatus |
Streaming API
| Endpoint | Beskrivelse |
|---|---|
/cometd/XX.0 | CometD long-polling til hændelser i realtid |
| PushTopic | Abonnér på postændringer via SOQL-baserede topics |
| Change Data Capture | Stream finkornede ændringer på feltniveau |
| Platform Events | Brugerdefineret hændelsesdrevet arkitektur |
Hændelser
Posthændelser (Change Data Capture)
| Hændelse | Trigger | Anvendelse |
|---|---|---|
ContactChangeEvent | Kontakt oprettet/opdateret/slettet | Kontaktsynkronisering i realtid |
LeadChangeEvent | Lead oprettet/opdateret/konverteret | Sporing af lead-livscyklus |
OpportunityChangeEvent | Opportunity-stadie ændret | Automatisering af aftalepipeline |
AccountChangeEvent | Account-post ændret | Synkronisering af virksomhedsdata |
Platform Events
| Hændelse | Trigger | Anvendelse |
|---|---|---|
Lead_Converted__e | Lead konverteret til kontakt | Nurture efter konvertering |
Deal_Won__e | Opportunity lukket-vundet | Flow til kunde-onboarding |
Deal_Lost__e | Opportunity lukket-tabt | Win-back-kampagner |
Kodeeksempler
Initialisér connector
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});Synkronisér kontakter med SOQL-filter
// 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 i realtid
// 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 limits
Salesforce REST API-grænser afhænger af din udgave og licensantal:
| Udgave | API-anmodninger pr. 24 timer |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 pr. brugerlicens (min. 15.000) |
| Unlimited | 5.000 pr. brugerlicens (min. 15.000) |
| Performance | 5.000 pr. brugerlicens (min. 15.000) |
Yderligere grænser:
- Samtidig API-grænse: 25 langtkørende anmodninger
- Bulk API: 15.000 batches pr. 24 timer
- Streaming API: 2.000 hændelser pr. dag (kan forhøjes)
- Composite API: 25 underanmodninger pr. composite-anmodning
Overvågning af API-forbrug
Overvåg dit API-forbrug i Salesforce Setup > System Overview. Tajo bruger bulk-API til store synkroniseringer for at spare på dine API-grænser.
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| INVALID_SESSION_ID | Token udløbet | Opdatér OAuth-token automatisk |
| REQUEST_LIMIT_EXCEEDED | Daglig API-grænse nået | Brug Bulk API eller reducér synkroniseringsfrekvens |
| FIELD_INTEGRITY_EXCEPTION | Påkrævet felt mangler | Kortlæg alle påkrævede felter i konfigurationen |
| DUPLICATES_DETECTED | Duplikatregler aktive | Konfigurér indstillinger for håndtering af duplikater |
| INSUFFICIENT_ACCESS | Manglende objekttilladelser | Giv API-adgang i Salesforce-profilen |
Debug-tilstand
Aktivér detaljeret logging:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTestforbindelse
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBedste praksis
- Brug Bulk API til store synkroniseringer - Skift til Bulk API 2.0 for datasæt over 2.000 poster
- Implementér Change Data Capture - Brug CDC til synkronisering i realtid i stedet for polling
- Kortlæg kun nødvendige felter - Reducér API-forbrug ved kun at synkronisere nødvendige felter
- Håndtér token-opdatering - Implementér automatisk logik til OAuth-token-opdatering
- Brug composite-anmodninger - Kombinér relaterede API-kald for at reducere antallet af anmodninger
- Test først i sandbox - Brug en Salesforce sandbox-organisation før produktionsudrulning
Sikkerhed
- OAuth 2.0 - Industristandardautorisation med flere grant-typer
- IP-begrænsninger - Salesforce understøtter login-IP-intervaller og indstillinger for betroede IP’er
- TLS 1.2+ - Al API-kommunikation krypteres med minimum TLS 1.2
- Sikkerhed på feltniveau - Granulær feltadgangskontrol pr. profil
- Sessionsstyring - Konfigurérbar session-timeout og grænser for samtidige sessioner