Salesforce-kobling
Salesforce-kobling
Koble Salesforce CRM til Brevo via Tajo for enterprise-grade kontaktsynkronisering, lead-håndtering, opportunity-sporing og markedsføringsautomatisering drevet av CRM-dataene dine.
Oversikt
| Egenskap | Verdi |
|---|---|
| Plattform | Salesforce |
| Kategori | CRM |
| Oppsettskompleksitet | Avansert |
| Offisiell integrasjon | Ja |
| Synkroniserte data | Kontakter, leads, accounts, opportunities, hendelser |
| API Base URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funksjoner
- Toveis kontakt-/lead-synkronisering - Synkroniser Salesforce-kontakter og leads med Brevo-kontaktlister
- Opportunity-sporing - Mapp avtaletrinn og beløp for inntektsbasert segmentering
- Account-hierarki - Synkroniser selskaps-accounts for account-based marketing i Brevo
- Mapping av egendefinerte objekter - Mapp Salesforce egendefinerte objekter til Brevo-attributter og -hendelser
- Synkronisering av kampanjemedlemmer - Synkroniser Salesforce-kampanjemedlemmer med Brevo-lister
- Aktivitetssporing - Synkroniser oppgaver, hendelser og e-postaktiviteter for engasjementspoeng
- Sanntids-streaming - Bruk Salesforce Streaming API for umiddelbare dataoppdateringer
- SOQL-spørringsstøtte - Filtrer synkroniserte data med egendefinerte SOQL-spørringer
Forutsetninger
Før du begynner, sørg for at du har:
- En Salesforce-org (enhver edition med API-tilgang)
- En Connected App konfigurert i Salesforce Setup
- API-tilgang aktivert for Salesforce-brukerprofilen din
- En Brevo-konto med API-tilgang
- En Tajo-konto
Autentisering
OAuth 2.0 Web Server Flow (anbefalt)
Best for produksjonsintegrasjoner med brukerautorisering.
# 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
For server-til-server-integrasjoner uten brukerinteraksjon.
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 krever at du legger til security-tokenet ditt etter passordet i username-password-flyten. Tilbakestill tokenet ditt fra Setup > My Personal Information > Reset My Security Token.
Konfigurasjon
Grunnleggende oppsett
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
Mapp Salesforce-felter til Brevo-kontaktattributter:
Standardmappinger
| Parameter | Type | Description |
|---|---|---|
Email required | string | Kontakt-/lead-e-post (unik identifikator for Brevo) |
FirstName optional | string | Mappes til FIRSTNAME-attributtet i Brevo |
LastName optional | string | Mappes til LASTNAME-attributtet i Brevo |
Phone optional | string | Mappes til SMS-attributtet for WhatsApp/SMS-meldinger |
Account.Name optional | string | Tilknyttet account-/selskapsnavn |
LeadSource optional | string | Kilde for lead-anskaffelse |
StageName optional | string | Opportunity-trinn for avtalesporing |
OwnerId optional | string | Tildelt salgsrepresentant for routing |
Mapping av egendefinerte felt
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-endepunkter
REST API-ressurser
| Metode | Endepunkt | Beskrivelse |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Spør kontakter |
POST | /services/data/vXX.0/sobjects/Contact | Opprett en kontakt |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Oppdater en kontakt |
GET | /services/data/vXX.0/sobjects/Lead | Spør leads |
GET | /services/data/vXX.0/sobjects/Account | Spør accounts |
GET | /services/data/vXX.0/sobjects/Opportunity | Spør opportunities |
GET | /services/data/vXX.0/query?q={SOQL} | Kjør SOQL-spørring |
POST | /services/data/vXX.0/composite/sobjects | Batch opprett/oppdater |
Bulk API
| Metode | Endepunkt | Beskrivelse |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Opprett bulk ingest-jobb |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Last opp batch-data |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Sjekk jobbstatus |
Streaming API
| Endepunkt | Beskrivelse |
|---|---|
/cometd/XX.0 | CometD long-polling for sanntidshendelser |
| PushTopic | Abonner på endringer i poster via SOQL-baserte temaer |
| Change Data Capture | Stream fingranulerte endringer på feltnivå |
| Platform Events | Egendefinert hendelsesdrevet arkitektur |
Hendelser
Post-hendelser (Change Data Capture)
| Hendelse | Trigger | Bruksområde |
|---|---|---|
ContactChangeEvent | Kontakt opprettet/oppdatert/slettet | Sanntids kontaktsynkronisering |
LeadChangeEvent | Lead opprettet/oppdatert/konvertert | Sporing av lead-livssyklus |
OpportunityChangeEvent | Opportunity-trinn endret | Pipelineautomatisering |
AccountChangeEvent | Account-post endret | Synkronisering av selskapsdata |
Platform Events
| Hendelse | Trigger | Bruksområde |
|---|---|---|
Lead_Converted__e | Lead konvertert til kontakt | Nurture etter konvertering |
Deal_Won__e | Opportunity closed-won | Onboarding-flyt for kunder |
Deal_Lost__e | Opportunity closed-lost | Win-back-kampanjer |
Kodeeksempler
Initialiser kobling
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});Synkroniser 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// }Sanntids-streaming
// 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 }});Hastighetsgrenser
Salesforce REST API-grenser avhenger av din edition og antall lisenser:
| Edition | API-forespørsler per 24 timer |
|---|---|
| Developer | 15 000 |
| Enterprise | 1 000 per brukerlisens (min 15 000) |
| Unlimited | 5 000 per brukerlisens (min 15 000) |
| Performance | 5 000 per brukerlisens (min 15 000) |
Ytterligere grenser:
- Samtidig API-grense: 25 long-running-forespørsler
- Bulk API: 15 000 batcher per 24 timer
- Streaming API: 2 000 hendelser per dag (kan økes)
- Composite API: 25 subforespørsler per composite-forespørsel
Overvåking av API-bruk
Overvåk API-bruken din i Salesforce Setup > System Overview. Tajo bruker bulk API for store synkroniseringer for å spare på API-grensene dine.
Feilsøking
Vanlige problemer
| Problem | Årsak | Løsning |
|---|---|---|
| INVALID_SESSION_ID | Token utløpt | Oppdater OAuth-token automatisk |
| REQUEST_LIMIT_EXCEEDED | Daglig API-grense nådd | Bruk Bulk API eller reduser synkroniseringsfrekvens |
| FIELD_INTEGRITY_EXCEPTION | Påkrevd felt mangler | Mapp alle påkrevde felter i konfigurasjonen |
| DUPLICATES_DETECTED | Duplikatregler aktive | Konfigurer preferanser for duplikathåndtering |
| INSUFFICIENT_ACCESS | Manglende objekttillatelser | Gi API-tilgang i Salesforce-profilen |
Feilsøkingsmodus
Aktiver detaljert logging:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTest tilkobling
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBeste praksis
- Bruk Bulk API for store synkroniseringer - Bytt til Bulk API 2.0 for datasett over 2 000 poster
- Implementer Change Data Capture - Bruk CDC for sanntidssynkronisering i stedet for polling
- Mapp kun nødvendige felter - Reduser API-bruk ved å synkronisere kun påkrevde felter
- Håndter token-oppdatering - Implementer automatisk OAuth token-oppdateringslogikk
- Bruk composite-forespørsler - Kombiner relaterte API-kall for å redusere antall forespørsler
- Test i sandbox først - Bruk en Salesforce-sandbox-org før produksjonsutrulling
Sikkerhet
- OAuth 2.0 - Industristandard autorisering med flere grant-typer
- IP-restriksjoner - Salesforce støtter innloggings-IP-områder og betrodde IP-innstillinger
- TLS 1.2+ - All API-kommunikasjon kryptert med minimum TLS 1.2
- Sikkerhet på feltnivå - Granulær feltilgangskontroll per profil
- Sesjonshåndtering - Konfigurerbar sesjonstimeout og grenser for samtidige sesjoner