Optimizely konnektor

Csatlakoztasd az Optimizely Feature Experimentationt a Brevóhoz a Tajo segítségével, hogy szinkronizáld a kísérlet-eredményeket, funkciójelző szegmensek szerint célozz kampányokat, és gazdagítsd a marketingautomatizálásokat A/B teszt adatokkal és közönséginsightokkal.

Áttekintés

TulajdonságÉrték
PlatformOptimizely
KategóriaKísérletezés (Egyéni)
Telepítés bonyolultságaKözepes
Hivatalos integrációNem
Szinkronizált adatokKísérletek, Közönségek, Események, Funkciójelzők
Hitelesítési módszerSzemélyes hozzáférési token / OAuth 2.0

Funkciók

  • Kísérlet-szinkronizáció – A/B teszt variáció-hozzárendelések küldése Brevo kapcsolat-attribútumokhoz
  • Közönség-célzás – Optimizely közönségek használata Brevo kampány-szegmentáláshoz
  • Konverziókövetés – Optimizely események követése és leképezése Brevo eseménykövetésre
  • Funkciójelző-szinkronizáció – Kapcsolatok szegmentálása engedélyezett funkciójelzők alapján
  • Eredmény-riportolás – Kísérlet-eredmények szinkronizálása elemzés utáni marketingkampányokhoz
  • Több projekt támogatása – Több Optimizely projekt csatlakoztatása egyetlen Tajo példányhoz

Előfeltételek

Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:

  1. Egy Optimizely Feature Experimentation fiókkal
  2. Egy személyes hozzáférési tokennel az Optimizely App Beállításokból
  3. Egy SDK kulccsal az Optimizely környezetedhez
  4. Egy Brevo fiókkal API-hozzáféréssel
  5. Egy Tajo fiókkal konnektor engedélyekkel

Hitelesítés

Személyes hozzáférési token

Terminal window
# 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
// All REST API requests use Bearer token auth
const headers = {
'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
};

SDK hitelesítés

// 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();

Konfiguráció

Alapbeállítás

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

Mezőleképezés

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 végpontok

VégpontMódszerLeírás
https://api.optimizely.com/v2/projectsGETProjektek listázása
https://api.optimizely.com/v2/experimentsGETKísérletek listázása
https://api.optimizely.com/v2/experiments/{id}GETKísérlet részletek lekérése
https://api.optimizely.com/v2/experiments/{id}/resultsGETKísérlet-eredmények lekérése
https://api.optimizely.com/v2/featuresGETFunkciójelzők listázása
https://api.optimizely.com/v2/features/{id}GETFunkciójelző lekérése
https://api.optimizely.com/v2/audiencesGETKözönségek listázása
https://api.optimizely.com/v2/eventsGETKövetett események listázása
https://logx.optimizely.com/v1/eventsPOSTEsemények követése (SDK végpont)

Kódpéldák

A konnektor inicializálása

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

Kísérlet-döntések szinkronizálása a Brevóba

// 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()
}
});
}
}
}
);

Kísérlet-eredmények szinkronizálása

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

Funkciójelző alapú szegmentálás

// 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()
}
});
}

Ráta-korlátok

VégpontKorlátMegjegyzések
REST API50 kérés/percSzemélyes hozzáférési tokenenkénti
Results API10 kérés/percNagyobb késleltetés, nehezebb lekérdezések
SDK esemény-kézbesítés10 000 esemény/kötegSDK eseményfeldolgozón keresztül
Adatfájl CDNKorlátlanGyorsítótárazva automatikus frissítéssel

Results API késleltetés

A Kísérlet-eredmények API nagy adatkészleteket dolgoz fel és 30+ másodpercig is tarthat a válasz. Használj aszinkron lekérdezést vagy gyorsítótárazást az alkalmazás blokkolásának elkerüléséhez.

Hibaelhárítás

ProblémaOkMegoldás
401 UnauthorizedToken lejárt/érvénytelenGeneráld újra a személyes hozzáférési tokent
SDK nem készAdatfájl nem töltődött beVárj az onReady() ígéret teljesítéséig
Nincsenek naplózott döntésekAz értesítés nincs regisztrálvaRegisztráld a figyelőt a döntések meghozatala előtt
Elavult funkciójelzőkAdatfájl gyorsítótárÁllíts be updateInterval-t az automatikus frissítéshez
Hiányzó eredményekKísérlet nem indult elEllenőrizd, hogy a kísérlet státusza “running”

Hibakeresési mód

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

Legjobb gyakorlatok

  1. SDK-t használj döntésekhez – A valós idejű jelző-kiértékeléshez az SDK-t, kezeléshez a REST API-t használd
  2. Implementálj esemény-kötegezést – Kötegelj SDK eseményeket a hálózati terhelés csökkentéséhez
  3. Gyorsítótárazd az adatfájlt – Engedélyezd az automatikus frissítést megfelelő intervallumokkal
  4. Szinkronizálj nyerő variációkat – A kísérletek lezárása után frissítsd a kapcsolati szegmenseket
  5. Attribútumokat használj célzáshoz – Add át az e-mailt és felhasználói attribútumokat a közönség-egyeztetéshez
  6. Figyeld a kísérletek státuszát – Csak futó vagy befejezett kísérletekből szinkronizálj adatokat

Biztonság

  • Személyes hozzáférési tokenek – Bearer token hitelesítés a REST API-hoz
  • SDK kulcs izoláció – Külön SDK kulcsok környezetenként (fejlesztési, tesztelési, éles)
  • Szerver oldali kiértékelés – Értékeld ki a funkciójelzőket szerver oldalon a kitettség megelőzéséhez
  • Token rotáció – Forgasd rendszeresen a személyes hozzáférési tokeneket
  • Minimális engedélyek – Használj csak olvasási tokeneket, ha nincs szükség írási hozzáférésre
  • Titkosított átvitel – TLS 1.2+ minden API és SDK kommunikációhoz

Kapcsolódó források

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.