---
title: "Customer.io-connector"
description: "Volledige Customer.io-integratiegids voor het synchroniseren van mensen, events, campagnes en workflowdata met Brevo via Tajo."
url: https://tajo.io/nl/docs/connectors/marketing/customerio/
markdown: https://tajo.io/nl/docs/connectors/marketing/customerio.md
lang: nl-NL
robots: noindex
---

Vraag vroegtijdige toegang aan

Vul je voornaam en je zakelijke e-mailadres in. We sturen je een link om je aanvraag voor toegang tot Tajo te bevestigen.

# Customer.io-connector

Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.

| Bronveld | Doelveld | Voorbeeldwaarde |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Verbind je Customer.io-messagingplatform met Brevo voor uniforme klantdata, cross-platform-campagnecoördinatie en geconsolideerde engagement-analytics.

## Overzicht

| Eigenschap | Waarde |
| --- | --- |
| **Platform** | Customer.io |
| **Categorie** | Marketing |
| **Setupcomplexiteit** | Gemiddeld |
| **Officiële integratie** | Nee |
| **Gesynchroniseerde data** | Mensen, Events, Campagnes, Segmenten |
| **Gebruikte API’s** | Track API, App API, Pipelines API |
| **Authenticatie** | Site ID + API-sleutel / App API-sleutel |
| **Base URL’s** | `track.customer.io`, `api.customer.io` |

## Functies

- **Mensen-synchronisatie** - Bidirectionele synchronisatie van klantprofielen met Brevo-contacten
- **Event-forwarding** - Volg gedrags-events en stuur ze door naar Brevo als automation-triggers
- **Campagne-analytics** - Synchroniseer campagneprestatie-metrics voor uniforme rapportage
- **Workflowdata** - Spiegel Customer.io-workflowstatussen in Brevo-contactattributen
- **Segmentreplicatie** - Repliceer Customer.io-segmenten als Brevo-lijsten
- **Object-datasync** - Synchroniseer non-people objects en relatiedata

## Vereisten

Voordat je begint, zorg dat je beschikt over:

1. Een Customer.io-account met API-toegang
2. Je Site ID en Track API Key (te vinden in Settings > API Credentials)
3. Een App API-sleutel voor het lezen van campagne- en segmentdata
4. Een Brevo-account met API-toegang
5. Een Tajo-account met een actief abonnement

## Authenticatie

Customer.io gebruikt twee afzonderlijke API’s met verschillende authenticatiemethoden:

### Track API (gedragsdata)

Wordt gebruikt voor het versturen van mensen, events en device-data. Authenticeert met Site ID en API-sleutel via Basic Auth.

```bash
# Basic Auth: Site ID as username, API Key as password
curl -X POST https://track.customer.io/api/v1/customers/user123 \
  -u "$SITE_ID:$API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'
```

### App API (data lezen)

Wordt gebruikt voor het ophalen van campagnes, segmenten en klantdata. Authenticeert met een bearer token.

```bash
curl -X GET https://api.customer.io/v1/campaigns \
  -H "Authorization: Bearer $APP_API_KEY"
```

Scheiding van API-sleutels

De Track API-sleutel en App API-sleutel zijn verschillende inloggegevens. De Track API-sleutel wordt gebruikt voor het schrijven van data, terwijl de App API-sleutel voor het lezen van data is. Beide zijn vereist voor een volledige Tajo-integratie.

### Verbinden met Tajo

```bash
tajo connectors install customerio \
  --site-id $CIO_SITE_ID \
  --track-api-key $CIO_TRACK_API_KEY \
  --app-api-key $CIO_APP_API_KEY
```

## Configuratie

### Basisopzet

```yaml
connectors:
  customerio:
    enabled: true
    region: "us"  # or "eu" for EU data center

    sync:
      people: true
      events: true
      campaigns: true
      segments: true
      objects: false

    lists:
      all_contacts: 12
      active_subscribers: 13
      churned: 14
```

### Veldmapping

Koppel Customer.io-persoonsattributen aan Brevo-contactattributen:

```yaml
field_mapping:
  # Standard fields
  id: CIO_ID
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  phone: SMS

  # Engagement metrics
  created_at: SIGNUP_DATE
  last_activity: LAST_ACTIVE
  plan: PLAN_NAME

  # Custom attributes
  company: COMPANY
  role: JOB_TITLE
  mrr: MONTHLY_REVENUE
  lifecycle_stage: LIFECYCLE_STAGE
```

### Event-mapping

```yaml
event_mapping:
  # Customer.io event -> Brevo event
  purchase_completed: ORDER_PLACED
  subscription_started: SUBSCRIPTION_START
  feature_activated: FEATURE_USED
  support_ticket_opened: SUPPORT_REQUEST
```

## API-endpoints

Tajo integreert met de volgende Customer.io API-endpoints:

| Endpoint | Methode | API | Doel |
| --- | --- | --- | --- |
| `/api/v1/customers/{id}` | PUT | Track | Persoon aanmaken of bijwerken |
| `/api/v1/customers/{id}/events` | POST | Track | Persoons-event tracken |
| `/api/v1/events` | POST | Track | Anonieme events tracken |
| `/api/v2/entity` | POST | Track | Mensen/objects aanmaken of bijwerken (Pipelines) |
| `/v1/campaigns` | GET | App | Campagnes opvragen |
| `/v1/campaigns/{id}/metrics` | GET | App | Campagneprestatie-metrics |
| `/v1/segments` | GET | App | Segmenten opvragen |
| `/v1/segments/{id}/membership` | GET | App | Segmentleden ophalen |
| `/v1/customers/{id}/attributes` | GET | App | Klantattributen ophalen |
| `/v1/customers/{id}/activities` | GET | App | Klantactiviteitenlog ophalen |

## Codevoorbeelden

### Connector initialiseren

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('customerio', {
  siteId: process.env.CIO_SITE_ID,
  trackApiKey: process.env.CIO_TRACK_API_KEY,
  appApiKey: process.env.CIO_APP_API_KEY,
  region: 'us'
});
```

### Mensen naar Brevo synchroniseren

```javascript
// Incremental sync of Customer.io people
await tajo.connectors.sync('customerio', {
  type: 'incremental',
  resources: ['people'],
  since: '2024-01-01',
  batchSize: 100
});

const status = await tajo.connectors.status('customerio');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T14:20:00Z',
//   peopleCount: 32500,
//   campaignsTracked: 18,
//   eventsProcessed: 87000
// }
```

### Events doorsturen

```javascript
// Forward Customer.io reporting webhook events to Brevo
app.post('/webhooks/customerio', async (req, res) => {
  const events = req.body;

  for (const event of events) {
    await tajo.connectors.handleEvent('customerio', {
      type: event.metric,
      payload: {
        customerId: event.data.customer_id,
        campaignId: event.data.campaign_id,
        timestamp: event.timestamp
      }
    });
  }

  res.status(200).send('OK');
});
```

### Segment exporteren

```javascript
const result = await tajo.connectors.exportSegment('customerio', {
  segmentId: 42,
  targetList: 13,
  includeAttributes: ['email', 'first_name', 'last_name', 'plan']
});

console.log(`Exported ${result.count} people to Brevo list 13`);
```

## Ratelimits

Customer.io hanteert verschillende ratelimits per API:

| API | Ratelimit | Opmerkingen |
| --- | --- | --- |
| **Track API** | ~100 requests/seconde | Per workspace |
| **App API** | 10 requests/seconde | Per API-sleutel |
| **Pipelines API** | 100 requests/seconde | Aanbevolen voor bulkdata |
| **Batch-endpoint** | 1.000 mensen per request | Max payload 500KB |

Gebruik batch-endpoints

Voor grote syncs gebruikt Tajo het Customer.io-batch-endpoint om tot 1.000 mensen per request te versturen, wat het aantal API-calls aanzienlijk vermindert.

## Probleemoplossing

### Veelvoorkomende problemen

| Probleem | Oorzaak | Oplossing |
| --- | --- | --- |
| 401 Unauthorized | Ongeldige Site ID of API-sleutel | Verifieer inloggegevens in Customer.io Settings > API |
| Mensen synchroniseren niet | Ontbrekende identifier | Zorg dat elke persoon een `id` of `email` heeft |
| Events niet getrackt | Verkeerd type API-sleutel | Gebruik de Track API-sleutel voor events, niet de App API-sleutel |
| EU-data niet toegankelijk | Verkeerde region geconfigureerd | Stel region in op `eu` voor EU-workspaces |
| Ratelimit-fouten | Te veel App API-calls | Verlaag pollingfrequentie voor campagnedata |

### Debugmodus

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

### Verbinding testen

```bash
tajo connectors test customerio
# ✓ Track API connection successful
# ✓ App API connection successful
# ✓ People accessible
# ✓ Campaigns readable
# ✓ Segments listable
```

## Best practices

1. **Gebruik de Pipelines API voor bulkdata** - De nieuwere Pipelines API is geoptimaliseerd voor high-volume-ingestion
2. **Stel reporting-webhooks in** - Stuur Customer.io-e-mail-events realtime door naar Tajo
3. **Koppel lifecycle-stages** - Synchroniseer Customer.io-segmentlidmaatschap naar Brevo-attributen
4. **Gebruik consistente identifiers** - Match `id`-velden tussen Customer.io en Brevo
5. **Synchroniseer incrementeel** - Vermijd volledige exports; maak gebruik van `last_activity`-timestamps
6. **Monitor webhook-levering** - Stel alerts in voor mislukte webhook-leveringen

## Beveiliging

- **Basic Auth** - De Track API authenticeert met Site ID en API-sleutel
- **Bearer token** - De App API gebruikt OAuth-achtige bearer tokens
- **Alleen HTTPS** - Alle API-communicatie versleuteld via TLS 1.2+
- **Regionale datacenters** - EU-datacenteroptie voor AVG-compliance
- **Versleutelde opslag** - Alle inloggegevens versleuteld opgeslagen in Tajo
- **Webhook-signatures** - Verifieer webhook-payloads met HMAC-signatures

## Gerelateerde resources

- [Braze-connector](https://tajo.io/nl/docs/connectors/marketing/braze)
- [Iterable-connector](https://tajo.io/nl/docs/connectors/marketing/iterable)
- [Customer Sync-skill](https://tajo.io/nl/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/nl/docs/contact-management)
