---
title: "Conector Optimizely"
description: "Ghid complet de integrare Optimizely pentru sincronizarea rezultatelor experimentelor, fanionelor de funcționalități și datelor de audiență cu Brevo prin Tajo."
url: https://tajo.io/ro/docs/connectors/custom/optimizely/
markdown: https://tajo.io/ro/docs/connectors/custom/optimizely.md
lang: ro-RO
robots: noindex
---

Solicită acces anticipat

Introduceți prenumele și adresa de e-mail profesională. Vă vom trimite un link pentru a confirma cererea de acces la Tajo.

# Conector Optimizely

Starea conectorului: Planificat Încă neconstruit. Tajo nu rulează astăzi acest conector.

| Câmp sursă | Câmp destinație | Valoare exemplu |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Conectați Optimizely Feature Experimentation la Brevo prin Tajo pentru a sincroniza rezultatele experimentelor, a targeta campanii după segmentele de fanioane de funcționalități și a îmbogăți automatizările de marketing cu date din testele A/B și informații despre audiență.

## Prezentare generală

| Proprietate | Valoare |
| --- | --- |
| **Platformă** | Optimizely |
| **Categorie** | Experimentare (Personalizat) |
| **Complexitate configurare** | Medie |
| **Integrare oficială** | Nu |
| **Date sincronizate** | Experimente, Audiențe, Evenimente, Fanioane de funcționalități |
| **Metodă de autentificare** | Token de acces personal / OAuth 2.0 |

## Funcționalități

- **Sincronizare experimente** - Transmiteți atribuirile variațiilor testelor A/B la atributele de contact Brevo
- **Targetare audiență** - Utilizați audiențele Optimizely pentru segmentarea campaniilor Brevo
- **Urmărire conversii** - Urmăriți evenimentele Optimizely și mapați-le la urmărirea evenimentelor Brevo
- **Sincronizare fanioane funcționalități** - Segmentați contactele după fanioanele de funcționalități activate
- **Raportare rezultate** - Sincronizați rezultatele experimentelor pentru campanii de marketing post-analiză
- **Suport multi-proiect** - Conectați mai multe proiecte Optimizely la o singură instanță Tajo

## Cerințe preliminare

Înainte de a începe, asigurați-vă că aveți:

1. Un cont Optimizely Feature Experimentation
2. Un Token de acces personal din [Optimizely App Settings](https://app.optimizely.com/v2/accountsettings/tokens)
3. O cheie SDK pentru mediul Optimizely
4. Un cont Brevo cu acces API
5. Un cont Tajo cu permisiuni de conector

## Autentificare

### Token de acces personal

```bash
# Generate at https://app.optimizely.com/v2/accountsettings/tokens
export OPTIMIZELY_ACCESS_TOKEN=your_personal_access_token
export OPTIMIZELY_SDK_KEY=your_sdk_key
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
```

```javascript
// All REST API requests use Bearer token auth
const headers = {
  'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
  'Content-Type': 'application/json'
};
```

### Autentificare SDK

```javascript
// For feature flag evaluation, use the SDK
const optimizelySDK = require('@optimizely/optimizely-sdk');

const optimizelyClient = optimizelySDK.createInstance({
  sdkKey: process.env.OPTIMIZELY_SDK_KEY,
  datafileOptions: {
    autoUpdate: true,
    updateInterval: 60000  // 1 minute
  }
});

await optimizelyClient.onReady();
```

## Configurare

### Configurare de bază

```yaml
connectors:
  optimizely:
    enabled: true
    access_token: "${OPTIMIZELY_ACCESS_TOKEN}"
    sdk_key: "${OPTIMIZELY_SDK_KEY}"
    project_id: "12345678"

    sync:
      experiments: true
      audiences: true
      events: true
      feature_flags: true
      schedule: "0 */2 * * *"  # Every 2 hours

    mapping:
      experiment_variation: EXPERIMENT_VARIATION
      feature_flags: ENABLED_FEATURES
      audience_segments: OPT_SEGMENTS
```

### Mapare câmpuri

```yaml
field_mapping:
  user_id: email
  experiment_key: EXPERIMENT_NAME
  variation_key: VARIATION_NAME
  feature_key: FEATURE_FLAG
  enabled: FEATURE_ENABLED
  audience_name: AUDIENCE_SEGMENT
  decision_timestamp: EXPERIMENT_DATE
```

## Puncte finale API

| Punct final | Metodă | Descriere |
| --- | --- | --- |
| `https://api.optimizely.com/v2/projects` | GET | Listează proiectele |
| `https://api.optimizely.com/v2/experiments` | GET | Listează experimentele |
| `https://api.optimizely.com/v2/experiments/{id}` | GET | Obține detalii experiment |
| `https://api.optimizely.com/v2/experiments/{id}/results` | GET | Obține rezultatele experimentului |
| `https://api.optimizely.com/v2/features` | GET | Listează fanioanele de funcționalități |
| `https://api.optimizely.com/v2/features/{id}` | GET | Obține fanionul de funcționalitate |
| `https://api.optimizely.com/v2/audiences` | GET | Listează audiențele |
| `https://api.optimizely.com/v2/events` | GET | Listează evenimentele urmărite |
| `https://logx.optimizely.com/v1/events` | POST | Urmărește evenimente (punct final SDK) |

## Exemple de cod

### Inițializare conector

```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('optimizely', {
  accessToken: process.env.OPTIMIZELY_ACCESS_TOKEN,
  sdkKey: process.env.OPTIMIZELY_SDK_KEY,
  projectId: '12345678'
});
```

### Sincronizare decizii experiment cu Brevo

```javascript
// Track experiment decisions and sync to Brevo
const optimizelyClient = optimizelySDK.createInstance({
  sdkKey: process.env.OPTIMIZELY_SDK_KEY
});

await optimizelyClient.onReady();

// Register a decision notification listener
optimizelyClient.notificationCenter.addNotificationListener(
  optimizelySDK.enums.NOTIFICATION_TYPES.DECISION,
  async (decisionObject) => {
    const { type, userId, attributes, decisionInfo } = decisionObject;

    if (type === 'feature' || type === 'ab-test') {
      const email = attributes.email;
      if (email) {
        await tajo.contacts.update(email, {
          attributes: {
            EXPERIMENT_NAME: decisionInfo.experimentKey || decisionInfo.featureKey,
            VARIATION_NAME: decisionInfo.variationKey,
            FEATURE_ENABLED: decisionInfo.featureEnabled || false,
            EXPERIMENT_DATE: new Date().toISOString()
          }
        });
      }
    }
  }
);
```

### Sincronizare rezultate experiment

```javascript
// Fetch experiment results and sync winning segments
const resultsResponse = await fetch(
  `https://api.optimizely.com/v2/experiments/${experimentId}/results`,
  {
    headers: {
      'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`
    }
  }
);

const results = await resultsResponse.json();

// Process variations and update contact segments
for (const variation of results.metrics) {
  const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;

  if (isWinner) {
    // Create a Brevo segment for users in the winning variation
    console.log(`Winning variation: ${variation.variation_name}`);
  }
}
```

### Segmentare bazată pe fanioane de funcționalități

```javascript
// Evaluate feature flags for user segmentation
async function syncFeatureFlags(userEmail, userId) {
  const features = ['new_checkout', 'loyalty_program', 'ai_recommendations'];
  const enabledFeatures = [];

  for (const feature of features) {
    const user = optimizelyClient.createUserContext(userId, {
      email: userEmail
    });
    const decision = user.decide(feature);

    if (decision.enabled) {
      enabledFeatures.push(feature);
    }
  }

  await tajo.contacts.update(userEmail, {
    attributes: {
      ENABLED_FEATURES: enabledFeatures.join(', '),
      FEATURE_FLAGS_SYNCED: new Date().toISOString()
    }
  });
}
```

## Limite de rată

| Punct final | Limită | Note |
| --- | --- | --- |
| REST API | 50 cereri/min | Per token de acces personal |
| Results API | 10 cereri/min | Latență mai mare, interogări mai grele |
| Expediere evenimente SDK | 10.000 evenimente/lot | Prin procesorul de evenimente SDK |
| CDN fișier date | Nelimitat | Stocat în cache cu actualizări automate |

Latența Results API

Experiment Results API procesează seturi de date mari și poate dura 30+ secunde pentru a răspunde. Utilizați interogare asincronă sau stocare în cache pentru a evita blocarea aplicației.

## Depanare

| Problemă | Cauză | Soluție |
| --- | --- | --- |
| 401 Neautorizat | Token expirat/invalid | Regenerați Tokenul de acces personal |
| SDK nepregatit | Fișier date neîncărcat | Așteptați rezolvarea promisiunii `onReady()` |
| Nicio decizie înregistrată | Notificare neînregistrată | Înregistrați listener înainte de a lua decizii |
| Fanioane de funcționalități deprecate | Cache fișier date | Setați `updateInterval` pentru reîmprospătare automată |
| Rezultate lipsă | Experimentul nu a început | Verificați că statusul experimentului este “running” |

### Modul de depanare

```yaml
connectors:
  optimizely:
    debug: true
    log_level: verbose
    log_decisions: true
    log_events: true
```

## Bune practici

1. **Utilizați SDK-ul pentru decizii** - Utilizați SDK-ul pentru evaluarea fanionelor în timp real, REST API pentru management
2. **Implementați gruparea evenimentelor** - Grupați evenimentele SDK pentru a reduce sarcina rețelei
3. **Stocați în cache fișierul date** - Activați actualizarea automată cu intervale corespunzătoare
4. **Sincronizați variațiile câștigătoare** - După finalizarea experimentelor, actualizați segmentele de contacte
5. **Utilizați atribute pentru targetare** - Transmiteți e-mailul și atributele utilizatorului pentru potrivirea audiențelor
6. **Monitorizați statusul experimentului** - Sincronizați date doar din experimentele în desfășurare sau finalizate

## Securitate

- **Tokeni de acces personal** - Autentificare cu token Bearer pentru REST API
- **Izolare cheie SDK** - Chei SDK separate per mediu (dev, staging, prod)
- **Evaluare pe server** - Evaluați fanioanele de funcționalități pe server pentru a preveni expunerea
- **Rotație token** - Rotiți Tokenii de acces personal periodic
- **Permisiuni minime** - Utilizați tokeni read-only când accesul de scriere nu este necesar
- **Transport criptat** - TLS 1.2+ pentru toate comunicațiile API și SDK

## Resurse conexe

- [Conector PostHog](https://tajo.io/ro/docs/connectors/custom/posthog)
- [Conector Segment](https://tajo.io/ro/docs/connectors/custom/segment)
- [Skill Sincronizare clienți](https://tajo.io/ro/docs/skills/data-sync/customer-sync)
- [Documentație Optimizely Feature Experimentation](https://docs.developers.optimizely.com/feature-experimentation/docs)
