---
title: "Salesforce Connector"
description: "Komplet guide til Salesforce CRM-integration til synkronisering af leads, kontakter, accounts, opportunities og brugerdefinerede objekter med Brevo via Tajo."
url: https://tajo.io/dk/docs/connectors/crm/salesforce/
markdown: https://tajo.io/dk/docs/connectors/crm/salesforce.md
lang: da-DK
robots: noindex
---

Bed om tidlig adgang til Tajo

Indtast dit fornavn og din arbejds-e-mailadresse. Vi sender dig et link til at bekræfte din anmodning om adgang til Tajo.

# Salesforce Connector

Connectorstatus: Planlagt Ikke bygget endnu. Tajo kører ikke denne connector i dag.

| Kildefelt | Destinationsfelt | Eksempelværdi |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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** | Nej |
| **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:

1. En Salesforce-organisation (enhver udgave med API-adgang)
2. En Connected App konfigureret i Salesforce Setup
3. API-adgang aktiveret for din Salesforce-brugerprofil
4. En Brevo-konto med API-adgang
5. En Tajo-konto

## Autentifikation

### OAuth 2.0 Web Server Flow (anbefalet)

Bedst til produktionsintegrationer med brugerautorisation.

```bash
# 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

Til server-til-server-integrationer uden brugerinteraktion.

```bash
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

```yaml
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
```

### Feltmapping

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

```yaml
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-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

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

### Synkronisér kontakter med SOQL-filter

```javascript
// 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 i realtid

```javascript
// 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 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:

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

### Testforbindelse

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

## Bedste praksis

1. **Brug Bulk API til store synkroniseringer** - Skift til Bulk API 2.0 for datasæt over 2.000 poster
2. **Implementér Change Data Capture** - Brug CDC til synkronisering i realtid i stedet for polling
3. **Kortlæg kun nødvendige felter** - Reducér API-forbrug ved kun at synkronisere nødvendige felter
4. **Håndtér token-opdatering** - Implementér automatisk logik til OAuth-token-opdatering
5. **Brug composite-anmodninger** - Kombinér relaterede API-kald for at reducere antallet af anmodninger
6. **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

## Relaterede ressourcer

- [Salesforce REST API-dokumentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [Salesforce Bulk API 2.0 Guide](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)
- [HubSpot Connector](https://tajo.io/dk/docs/connectors/crm/hubspot)
- [Customer Sync Skill](https://tajo.io/dk/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/dk/docs/contact-management)
