Salesforce-koppling
Salesforce-koppling
Anslut ditt Salesforce CRM till Brevo via Tajo för kontaktsynkronisering på företagsnivå, leadhantering, uppföljning av affärsmöjligheter och marknadsautomation driven av din CRM-data.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | Salesforce |
| Kategori | CRM |
| Installationskomplexitet | Avancerad |
| Officiell integration | Ja |
| Data som synkas | Kontakter, leads, konton, affärsmöjligheter, händelser |
| API bas-URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funktioner
- Dubbelriktad synk av kontakter/leads - Synkronisera Salesforce-kontakter och leads med Brevo-kontaktlistor
- Uppföljning av affärsmöjligheter - Mappa affärsstadier och belopp för intäktsbaserad segmentering
- Kontohierarki - Synka företagskonton för kontobaserad marknadsföring i Brevo
- Mappning av anpassade objekt - Mappa Salesforce-anpassade objekt till Brevo-attribut och händelser
- Synkronisering av kampanjmedlemmar - Synka medlemmar i Salesforce-kampanjer med Brevo-listor
- Aktivitetsspårning - Synka uppgifter, händelser och e-postaktiviteter för engagemangsscoring
- Realtidsstreaming - Använd Salesforce Streaming API för omedelbara datauppdateringar
- SOQL-stöd för frågor - Filtrera synkad data med anpassade SOQL-frågor
Förutsättningar
Innan du börjar, se till att du har:
- En Salesforce-org (valfri utgåva med API-åtkomst)
- En Connected App konfigurerad i Salesforce Setup
- API-åtkomst aktiverad för din Salesforce-användarprofil
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto
Autentisering
OAuth 2.0 Web Server-flöde (rekommenderas)
Bäst för produktionsintegrationer med användargodkännande.
# 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}"Användarnamn-lösenordsflöde
För server-till-server-integrationer utan användarinteraktion.
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}"Säkerhetstoken
Salesforce kräver att du lägger till din säkerhetstoken efter ditt lösenord för användarnamn-lösenordsflödet. Återställ din token från Setup > My Personal Information > Reset My Security Token.
Konfiguration
Grundinställning
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: 17Fältmappning
Mappa Salesforce-fält till Brevo-kontaktattribut:
Standardmappningar
| Parameter | Type | Description |
|---|---|---|
Email required | string | Kontakt-/lead-e-post (unik identifierare för Brevo) |
FirstName optional | string | Mappas till attributet FIRSTNAME i Brevo |
LastName optional | string | Mappas till attributet LASTNAME i Brevo |
Phone optional | string | Mappas till attributet SMS för WhatsApp/SMS-meddelanden |
Account.Name optional | string | Tillhörande konto-/företagsnamn |
LeadSource optional | string | Källa för leadförvärv |
StageName optional | string | Stadium för affärsmöjlighet för uppföljning av affärer |
OwnerId optional | string | Tilldelad säljare för routing |
Mappning av anpassade fält
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-resurser
| Metod | Endpoint | Beskrivning |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Fråga kontakter |
POST | /services/data/vXX.0/sobjects/Contact | Skapa en kontakt |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Uppdatera en kontakt |
GET | /services/data/vXX.0/sobjects/Lead | Fråga leads |
GET | /services/data/vXX.0/sobjects/Account | Fråga konton |
GET | /services/data/vXX.0/sobjects/Opportunity | Fråga affärsmöjligheter |
GET | /services/data/vXX.0/query?q={SOQL} | Kör SOQL-fråga |
POST | /services/data/vXX.0/composite/sobjects | Batch-skapa/uppdatera |
Bulk API
| Metod | Endpoint | Beskrivning |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Skapa bulk-ingestjobb |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Ladda upp batch-data |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Kontrollera jobbstatus |
Streaming API
| Endpoint | Beskrivning |
|---|---|
/cometd/XX.0 | CometD long-polling för händelser i realtid |
| PushTopic | Prenumerera på poständringar via SOQL-baserade ämnen |
| Change Data Capture | Streama granulära ändringar på fältnivå |
| Platform Events | Anpassad händelsedriven arkitektur |
Händelser
Posthändelser (Change Data Capture)
| Händelse | Utlösare | Användningsfall |
|---|---|---|
ContactChangeEvent | Kontakt skapad/uppdaterad/raderad | Kontaktsynk i realtid |
LeadChangeEvent | Lead skapad/uppdaterad/konverterad | Spårning av leadlivscykel |
OpportunityChangeEvent | Stadium för affärsmöjlighet ändrat | Automation av affärspipeline |
AccountChangeEvent | Kontopost modifierad | Synkronisering av företagsdata |
Platform Events
| Händelse | Utlösare | Användningsfall |
|---|---|---|
Lead_Converted__e | Lead konverterad till kontakt | Nurture efter konvertering |
Deal_Won__e | Affärsmöjlighet vunnen | Flöde för kundonboarding |
Deal_Lost__e | Affärsmöjlighet förlorad | Win-back-kampanjer |
Kodexempel
Initiera kopplingen
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});Synka 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 }});Hastighetsbegränsningar
Gränser för Salesforce REST API beror på din utgåva och antal licenser:
| Utgåva | API-förfrågningar per 24 timmar |
|---|---|
| Developer | 15 000 |
| Enterprise | 1 000 per användarlicens (min 15 000) |
| Unlimited | 5 000 per användarlicens (min 15 000) |
| Performance | 5 000 per användarlicens (min 15 000) |
Ytterligare gränser:
- Gräns för samtidiga API: 25 långvariga förfrågningar
- Bulk API: 15 000 batcher per 24 timmar
- Streaming API: 2 000 händelser per dag (kan utökas)
- Composite API: 25 delförfrågningar per composite-förfrågan
Övervakning av API-användning
Övervaka din API-användning i Salesforce Setup > System Overview. Tajo använder bulk-API för stora synkar för att spara dina API-gränser.
Felsökning
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| INVALID_SESSION_ID | Token utgången | Uppdatera OAuth-token automatiskt |
| REQUEST_LIMIT_EXCEEDED | Daglig API-gräns nådd | Använd Bulk API eller minska synkfrekvensen |
| FIELD_INTEGRITY_EXCEPTION | Obligatoriskt fält saknas | Mappa alla obligatoriska fält i konfigurationen |
| DUPLICATES_DETECTED | Dubblettregler aktiva | Konfigurera inställningar för dubletthantering |
| INSUFFICIENT_ACCESS | Saknar objektbehörigheter | Bevilja API-åtkomst i Salesforce-profilen |
Felsökningsläge
Aktivera utförlig loggning:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTesta anslutning
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBästa praxis
- Använd Bulk API för stora synkar - Byt till Bulk API 2.0 för dataset över 2 000 poster
- Implementera Change Data Capture - Använd CDC för synk i realtid istället för polling
- Mappa endast nödvändiga fält - Minska API-användningen genom att endast synka nödvändiga fält
- Hantera tokenuppdatering - Implementera automatisk logik för att uppdatera OAuth-token
- Använd composite-förfrågningar - Kombinera relaterade API-anrop för att minska antalet förfrågningar
- Testa i sandbox först - Använd en Salesforce-sandbox-org innan produktionsdistribution
Säkerhet
- OAuth 2.0 - Industristandard för auktorisering med flera grant-typer
- IP-begränsningar - Salesforce stöder inloggnings-IP-intervall och betrodda IP-inställningar
- TLS 1.2+ - All API-kommunikation krypterad med minst TLS 1.2
- Säkerhet på fältnivå - Granulär åtkomstkontroll per fält per profil
- Sessionshantering - Konfigurerbar sessionstimeout och gränser för samtidiga sessioner