---
title: "Optimizely Konektor"
description: "Kompletan vodič za integraciju Optimizelya za sinkronizaciju rezultata eksperimenata, feature zastavica i korisničkih podataka s Brevom putem Taja."
url: https://tajo.io/hr/docs/connectors/custom/optimizely/
markdown: https://tajo.io/hr/docs/connectors/custom/optimizely.md
lang: hr-HR
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslat ćemo vam poveznicu za potvrdu zahtjeva za pristup Taju.

# Optimizely Konektor

Status konektora: Planirano Još nije izrađeno. Tajo danas ne pokreće ovaj konektor.

| Izvorno polje | Odredišno polje | Primjer vrijednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Povežite Optimizely Feature Experimentation s Brevom putem Taja kako biste sinkronizirali rezultate eksperimenata, ciljali kampanje prema segmentima feature zastavica i obogatili marketinške automatizacije s A/B test podacima i uvidima publike.

## Pregled

| Svojstvo | Vrijednost |
| --- | --- |
| **Platforma** | Optimizely |
| **Kategorija** | Eksperimentiranje (Prilagođeno) |
| **Složenost postavljanja** | Srednje |
| **Službena integracija** | Ne |
| **Sinkronizirani podaci** | Eksperimenti, Publike, Događaji, Feature zastavice |
| **Metoda autentifikacije** | Personal Access Token / OAuth 2.0 |

## Značajke

- **Sinkronizacija eksperimenata** - Guranje dodjela varijanti A/B testova na Brevo atribute kontakata
- **Ciljanje publike** - Koristite Optimizely publike za Brevo segmentaciju kampanja
- **Praćenje konverzija** - Pratite Optimizely događaje i mapirajte na Brevo praćenje događaja
- **Sinkronizacija feature zastavica** - Segmentirajte kontakte prema omogućenim feature zastavicama
- **Izvješćivanje o rezultatima** - Sinkronizirajte rezultate eksperimenata za post-analitičke marketinške kampanje
- **Podrška za više projekata** - Povežite više Optimizely projekata s jednom Tajo instancom

## Preduvjeti

Prije nego što počnete, osigurajte da imate:

1. Optimizely Feature Experimentation račun
2. Personal Access Token iz [Optimizely App Postavke](https://app.optimizely.com/v2/accountsettings/tokens)
3. SDK ključ za vaše Optimizely okruženje
4. Brevo račun s API pristupom
5. Tajo račun s dozvolama konektora

## Autentifikacija

### Personal Access Token

```bash
# Generirajte na 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
// Svi REST API zahtjevi koriste Bearer token autentifikaciju
const headers = {
  'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
  'Content-Type': 'application/json'
};
```

### SDK autentifikacija

```javascript
// Za evaluaciju feature zastavica, koristite SDK
const optimizelySDK = require('@optimizely/optimizely-sdk');

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

await optimizelyClient.onReady();
```

## Konfiguracija

### Osnovna konfiguracija

```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 * * *"  # Svakih 2 sata

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

### Mapiranje polja

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

## API krajnje točke

| Krajnja točka | Metoda | Opis |
| --- | --- | --- |
| `https://api.optimizely.com/v2/projects` | GET | Popis projekata |
| `https://api.optimizely.com/v2/experiments` | GET | Popis eksperimenata |
| `https://api.optimizely.com/v2/experiments/{id}` | GET | Detalji eksperimenta |
| `https://api.optimizely.com/v2/experiments/{id}/results` | GET | Rezultati eksperimenta |
| `https://api.optimizely.com/v2/features` | GET | Popis feature zastavica |
| `https://api.optimizely.com/v2/features/{id}` | GET | Detalji feature zastavice |
| `https://api.optimizely.com/v2/audiences` | GET | Popis publike |
| `https://api.optimizely.com/v2/events` | GET | Popis praćenih događaja |
| `https://logx.optimizely.com/v1/events` | POST | Praćenje događaja (SDK krajnja točka) |

## Primjeri koda

### Inicijalizacija konektora

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

### Sinkronizacija odluka eksperimenta s Brevom

```javascript
// Praćenje odluka eksperimenta i sinkronizacija s Brevom
const optimizelyClient = optimizelySDK.createInstance({
  sdkKey: process.env.OPTIMIZELY_SDK_KEY
});

await optimizelyClient.onReady();

// Registracija slušatelja obavijesti o odlukama
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()
          }
        });
      }
    }
  }
);
```

### Sinkronizacija rezultata eksperimenta

```javascript
// Dohvaćanje rezultata eksperimenta i sinkronizacija pobjedničkih segmenata
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();

// Obrada varijanti i ažuriranje segmenata kontakata
for (const variation of results.metrics) {
  const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;

  if (isWinner) {
    // Stvaranje Brevo segmenta za korisnike u pobjedničkoj varijanti
    console.log(`Pobjednička varijanta: ${variation.variation_name}`);
  }
}
```

### Segmentacija temeljena na feature zastavicama

```javascript
// Evaluacija feature zastavica za korisničku segmentaciju
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()
    }
  });
}
```

## Ograničenja brzine

| Krajnja točka | Ograničenje | Napomene |
| --- | --- | --- |
| REST API | 50 zah./min | Po personal access tokenu |
| Results API | 10 zah./min | Veća latencija, teži upiti |
| SDK isporuka događaja | 10.000 događaja/serija | Putem SDK procesora događaja |
| Datafile CDN | Neograničeno | Predmemorirano s automatskim ažuriranjima |

Latencija Results API-ja

Experiment Results API obrađuje velike skupove podataka i može trebati 30+ sekundi za odgovor. Koristite asinkrono anketiranje ili predmemoriranje kako biste izbjegli blokiranje vaše aplikacije.

## Rješavanje problema

| Problem | Uzrok | Rješenje |
| --- | --- | --- |
| 401 Unauthorized | Token istekao/nevažeći | Regenerirajte Personal Access Token |
| SDK nije spreman | Datafile nije učitan | Pričekajte da se razriješi obećanje `onReady()` |
| Nisu zabilježene odluke | Obavijest nije registrirana | Registrirajte slušatelja prije donošenja odluka |
| Zastarjele feature zastavice | Predmemorija datafile-a | Postavite `updateInterval` za automatsko osvježavanje |
| Nedostaju rezultati | Eksperiment nije pokrenut | Provjerite je li status eksperimenta “running” |

### Način otklanjanja grešaka

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

## Preporučene prakse

1. **Koristite SDK za odluke** - Koristite SDK za evaluaciju zastavica u stvarnom vremenu, REST API za upravljanje
2. **Implementirajte skupno slanje događaja** - Skupni SDK događaji za smanjenje mrežnog opterećenja
3. **Predmemorirajte datafile** - Omogućite automatsko ažuriranje s odgovarajućim intervalima
4. **Sinkronizirajte pobjedničke varijante** - Nakon zaključivanja eksperimenata, ažurirajte segmente kontakata
5. **Koristite atribute za ciljanje** - Proslijedite e-mail i korisničke atribute za podudaranje publike
6. **Pratite status eksperimenta** - Sinkronizirajte samo podatke iz pokrenutih ili zaključenih eksperimenata

## Sigurnost

- **Personal Access Tokeni** - Bearer token autentifikacija za REST API
- **Izolacija SDK ključa** - Zasebni SDK ključevi po okruženju (razvoj, testiranje, produkcija)
- **Evaluacija na strani servera** - Evaluirajte feature zastavice na strani servera kako biste spriječili izlaganje
- **Rotacija tokena** - Periodično rotirajte Personal Access Tokene
- **Minimalne dozvole** - Koristite tokene samo za čitanje kada write pristup nije potreban
- **Šifrirani transport** - TLS 1.2+ za sve API i SDK komunikacije

## Povezani resursi

- [PostHog Konektor](https://tajo.io/hr/docs/connectors/custom/posthog)
- [Segment Konektor](https://tajo.io/hr/docs/connectors/custom/segment)
- [Vještina sinkronizacije korisnika](https://tajo.io/hr/docs/skills/data-sync/customer-sync)
- [Optimizely Feature Experimentation dokumentacija](https://docs.developers.optimizely.com/feature-experimentation/docs)
