Ansök om tidig åtkomst

Ange ditt förnamn och din e-postadress på jobbet. Vi skickar en länk för att bekräfta din begäran om åtkomst till Tajo.

Optimizely-koppling

Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.

Illustration · exempeldata

Exempel på synkronisering

Granska en post

Källa

Optimizely

Kopplingens status: Planerad

Mål

Ditt andra verktyg

Kopplingens status: Eget verktyg

KällfältMålfältExempelvärde
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. Utkast
  2. Granska en post
  3. Godkänn den här versionen

Status gäller varje enskild koppling och garanterar inte att den här synkroniseringen är klar. Fälten är illustrativa. Kontrollera det faktiska schemat och behörigheterna innan synkronisering körs.

Anslut Optimizely Feature Experimentation till Brevo via Tajo för att synka experimentresultat, rikta kampanjer efter feature flag-segment och berika marknadsautomationer med A/B-testdata och målgruppsinsikter.

Översikt

EgenskapVärde
PlattformOptimizely
KategoriExperimentation (Anpassad)
InstallationskomplexitetMedel
Officiell integrationNej
Data som synkasExperiment, målgrupper, händelser, feature flags
AutentiseringsmetodPersonal Access Token / OAuth 2.0

Funktioner

  • Experimentsynkronisering - Skicka A/B-testvariationstilldelningar till Brevo-kontaktattribut
  • Målgruppsmålning - Använd Optimizely-målgrupper för Brevo-kampanjsegmentering
  • Konverteringsspårning - Spåra Optimizely-händelser och mappa till Brevo-händelsespårning
  • Feature flag-synkronisering - Segmentera kontakter efter aktiverade feature flags
  • Resultatrapportering - Synka experimentresultat för efteranalysmarknadsföringskampanjer
  • Stöd för flera projekt - Anslut flera Optimizely-projekt till en enskild Tajo-instans

Förutsättningar

Innan du börjar, se till att du har:

  1. Ett Optimizely Feature Experimentation-konto
  2. En Personal Access Token från Optimizely App Settings
  3. En SDK-nyckel för din Optimizely-miljö
  4. Ett Brevo-konto med API-åtkomst
  5. Ett Tajo-konto med kopplingsbehörigheter

Autentisering

Personal Access 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-autentisering

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

Konfiguration

Grundinställning

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

Fältmappning

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

EndpointMetodBeskrivning
https://api.optimizely.com/v2/projectsGETLista projekt
https://api.optimizely.com/v2/experimentsGETLista experiment
https://api.optimizely.com/v2/experiments/{id}GETHämta experimentdetaljer
https://api.optimizely.com/v2/experiments/{id}/resultsGETHämta experimentresultat
https://api.optimizely.com/v2/featuresGETLista feature flags
https://api.optimizely.com/v2/features/{id}GETHämta feature flag
https://api.optimizely.com/v2/audiencesGETLista målgrupper
https://api.optimizely.com/v2/eventsGETLista spårade händelser
https://logx.optimizely.com/v1/eventsPOSTSpåra händelser (SDK-endpoint)

Kodexempel

Initiera kopplingen

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

Synka experimentbeslut till Brevo

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

Synka experimentresultat

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

Segmentering baserat på feature flag

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

Hastighetsbegränsningar

EndpointGränsAnteckningar
REST API50 förfrågningar/minPer personal access token
Results API10 förfrågningar/minHögre latens, tyngre frågor
SDK Event Dispatch10 000 händelser/batchVia SDK-händelseprocessor
Datafile CDNObegränsatCachat med autouppdateringar

Latens för Results API

Experiment Results API behandlar stora dataset och kan ta 30+ sekunder att svara. Använd asynkron polling eller cachning för att undvika att blockera din applikation.

Felsökning

ProblemOrsakLösning
401 UnauthorizedToken utgången/ogiltigÅtergenerera Personal Access Token
SDK ej redoDatafilen ej laddadVänta på att onReady()-löftet löses
Inga beslut loggadeNotifiering ej registreradRegistrera lyssnare innan beslut fattas
Inaktuella feature flagsDatafilcacheSätt updateInterval för autouppdatering
Saknade resultatExperiment ej startatVerifiera att experimentstatus är “running”

Felsökningsläge

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

Bästa praxis

  1. Använd SDK för beslut - Använd SDK för flagutvärdering i realtid, REST API för hantering
  2. Implementera händelsebatchning - Batcha SDK-händelser för att minska nätverksoverhead
  3. Cacha datafilen - Aktivera autouppdatering med lämpliga intervall
  4. Synka vinnande variationer - Efter att experiment avslutats, uppdatera kontaktsegment
  5. Använd attribut för målning - Skicka e-post och användarattribut för målgruppsmatchning
  6. Övervaka experimentstatus - Synka endast data från pågående eller avslutade experiment

Säkerhet

  • Personal Access Tokens - Bearer-tokenautentisering för REST API
  • SDK-nyckelisolering - Separata SDK-nycklar per miljö (dev, staging, prod)
  • Utvärdering på serversidan - Utvärdera feature flags på serversidan för att förhindra exponering
  • Tokenrotation - Rotera Personal Access Tokens regelbundet
  • Minimala behörigheter - Använd skrivskyddade tokens när skrivåtkomst inte behövs
  • Krypterad transport - TLS 1.2+ för all API- och SDK-kommunikation

Relaterade resurser

Ansök om tidig åtkomst

Ange ditt förnamn och din e-postadress på jobbet. Vi skickar en länk för att bekräfta din begäran om åtkomst till Tajo.

AI-assistent

Hej! Fråga mig om dokumentationen.

Den här sidan som Markdown: optimizely.md

Läser in Markdown …
Öppna i Claude Öppna i ChatGPT