---
title: "Optimizely کنیکٹر"
description: "Tajo کے ذریعے Brevo کے ساتھ تجرباتی نتائج، feature flags، اور audience ڈیٹا کو سنک کرنے کے لیے مکمل Optimizely انٹیگریشن گائیڈ۔"
url: https://tajo.io/ur/docs/connectors/custom/optimizely/
markdown: https://tajo.io/ur/docs/connectors/custom/optimizely.md
lang: ur-PK
robots: noindex
---

ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور دفتری ای میل پتہ درج کریں۔ ہم Tajo تک رسائی کی درخواست کی تصدیق کے لیے ایک لنک ای میل کریں گے۔

# Optimizely کنیکٹر

کنیکٹر کی حیثیت: منصوبہ بند ابھی تیار نہیں ہوا۔ Tajo آج یہ کنیکٹر نہیں چلاتا۔

| ماخذ فیلڈ | منزل فیلڈ | نمونہ قدر |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

تجرباتی نتائج سنک کرنے، feature flag سیگمنٹس کے ذریعے مہمات کو ہدف بنانے، اور A/B test ڈیٹا اور audience بصیرتوں کے ساتھ مارکیٹنگ آٹومیشنز کو بہتر بنانے کے لیے Optimizely Feature Experimentation کو Tajo کے ذریعے Brevo سے منسلک کریں۔

## جائزہ

| خاصیت | قدر |
| --- | --- |
| **پلیٹ فارم** | Optimizely |
| **زمرہ** | تجربہ (حسب ضرورت) |
| **سیٹ اپ کی پیچیدگی** | معتدل |
| **آفیشل انٹیگریشن** | نہیں |
| **سنک شدہ ڈیٹا** | تجربات، Audiences، ایونٹس، Feature Flags |
| **توثیقی طریقہ** | Personal Access Token / OAuth 2.0 |

## خصوصیات

- **تجربہ سنک** - A/B test variation assignments کو Brevo رابطہ خصوصیات کی طرف بھیجیں
- **Audience targeting** - Brevo مہم سیگمنٹیشن کے لیے Optimizely audiences کا استعمال کریں
- **Conversion ٹریکنگ** - Optimizely ایونٹس کو ٹریک کریں اور Brevo ایونٹ ٹریکنگ سے میپ کریں
- **Feature flag سنک** - فعال feature flags کے ذریعے رابطوں کو سیگمنٹ کریں
- **نتائج کی رپورٹنگ** - پوسٹ-تجزیہ مارکیٹنگ مہمات کے لیے تجرباتی نتائج سنک کریں
- **ملٹی-پروجیکٹ سپورٹ** - متعدد Optimizely پروجیکٹس کو ایک واحد Tajo انسٹینس سے منسلک کریں

## ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

1. Optimizely Feature Experimentation اکاؤنٹ
2. [Optimizely App Settings](https://app.optimizely.com/v2/accountsettings/tokens) سے Personal Access Token
3. اپنے Optimizely ماحول کے لیے SDK key
4. API رسائی کے ساتھ Brevo اکاؤنٹ
5. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

## توثیق

### Personal Access Token

```bash
# 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
// تمام REST API درخواستیں Bearer token توثیق استعمال کرتی ہیں
const headers = {
  'Authorization': `Bearer ${process.env.OPTIMIZELY_ACCESS_TOKEN}`,
  'Content-Type': 'application/json'
};
```

### SDK توثیق

```javascript
// feature flag evaluation کے لیے، 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();
```

## کنفیگریشن

### بنیادی سیٹ اپ

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

### فیلڈ میپنگ

```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 اینڈ پوائنٹس

| اینڈ پوائنٹ | طریقہ | تفصیل |
| --- | --- | --- |
| `https://api.optimizely.com/v2/projects` | GET | پروجیکٹس کی فہرست |
| `https://api.optimizely.com/v2/experiments` | GET | تجربات کی فہرست |
| `https://api.optimizely.com/v2/experiments/{id}` | GET | تجربہ تفصیلات حاصل کریں |
| `https://api.optimizely.com/v2/experiments/{id}/results` | GET | تجرباتی نتائج حاصل کریں |
| `https://api.optimizely.com/v2/features` | GET | feature flags کی فہرست |
| `https://api.optimizely.com/v2/features/{id}` | GET | feature flag حاصل کریں |
| `https://api.optimizely.com/v2/audiences` | GET | audiences کی فہرست |
| `https://api.optimizely.com/v2/events` | GET | ٹریک شدہ ایونٹس کی فہرست |
| `https://logx.optimizely.com/v1/events` | POST | ایونٹس ٹریک کریں (SDK اینڈ پوائنٹ) |

## کوڈ مثالیں

### کنیکٹر کو شروع کریں

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

### تجرباتی فیصلوں کو Brevo سے سنک کریں

```javascript
// تجرباتی فیصلوں کو ٹریک کریں اور Brevo سے سنک کریں
const optimizelyClient = optimizelySDK.createInstance({
  sdkKey: process.env.OPTIMIZELY_SDK_KEY
});

await optimizelyClient.onReady();

// فیصلے کی اطلاع کا 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()
          }
        });
      }
    }
  }
);
```

### تجرباتی نتائج سنک کریں

```javascript
// تجرباتی نتائج حاصل کریں اور جیتنے والے سیگمنٹس سنک کریں
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();

// variations پر عمل کریں اور رابطہ سیگمنٹس اپ ڈیٹ کریں
for (const variation of results.metrics) {
  const isWinner = variation.is_improvement && variation.statistical_significance >= 0.95;

  if (isWinner) {
    // جیتنے والی variation میں صارفین کے لیے Brevo سیگمنٹ بنائیں
    console.log(`Winning variation: ${variation.variation_name}`);
  }
}
```

### Feature Flag پر مبنی سیگمنٹیشن

```javascript
// صارف سیگمنٹیشن کے لیے feature flags کا جائزہ لیں
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()
    }
  });
}
```

## ریٹ کی حدود

| اینڈ پوائنٹ | حد | نوٹس |
| --- | --- | --- |
| REST API | 50 req/min | فی personal access token |
| Results API | 10 req/min | زیادہ latency، بھاری queries |
| SDK Event Dispatch | 10,000 ایونٹس/بیچ | SDK event processor کے ذریعے |
| Datafile CDN | لامحدود | auto-updates کے ساتھ کیشے |

Results API Latency

Experiment Results API بڑے ڈیٹا سیٹس پر عمل کرتا ہے اور جواب دینے میں 30+ سیکنڈ لے سکتا ہے۔ اپنی ایپلی کیشن کو بلاک کرنے سے بچنے کے لیے async polling یا کیشنگ کا استعمال کریں۔

## مسائل کا سراغ

| مسئلہ | وجہ | حل |
| --- | --- | --- |
| 401 Unauthorized | ٹوکن میعاد ختم/غیر معتبر | Personal Access Token دوبارہ تخلیق کریں |
| SDK تیار نہیں | Datafile لوڈ نہیں | `onReady()` promise کے حل ہونے کا انتظار کریں |
| کوئی فیصلے لاگ نہیں ہوئے | اطلاع رجسٹر نہیں | فیصلے کرنے سے پہلے listener رجسٹر کریں |
| پرانے feature flags | Datafile cache | auto-refresh کے لیے `updateInterval` سیٹ کریں |
| غائب نتائج | تجربہ شروع نہیں ہوا | تصدیق کریں کہ تجربے کی حیثیت “running” ہے |

### ڈیبگ موڈ

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

## بہترین طریقے

1. **فیصلوں کے لیے SDK استعمال کریں** - ریئل ٹائم flag evaluation کے لیے SDK، انتظام کے لیے REST API استعمال کریں
2. **Event batching نافذ کریں** - نیٹ ورک اوور ہیڈ کو کم کرنے کے لیے SDK ایونٹس کو بیچ کریں
3. **Datafile کیشے کریں** - مناسب intervals کے ساتھ auto-update فعال کریں
4. **جیتنے والی variations سنک کریں** - تجربات ختم ہونے کے بعد، رابطہ سیگمنٹس اپ ڈیٹ کریں
5. **ہدف بنانے کے لیے خصوصیات استعمال کریں** - audience matching کے لیے email اور صارف کی خصوصیات پاس کریں
6. **تجربے کی حیثیت کی نگرانی کریں** - صرف چلنے والے یا ختم شدہ تجربات سے ڈیٹا سنک کریں

## سیکیورٹی

- **Personal Access Tokens** - REST API کے لیے Bearer token توثیق
- **SDK key تنہائی** - فی ماحول الگ SDK keys (dev، staging، prod)
- **سرور سائیڈ evaluation** - ظاہر ہونے سے روکنے کے لیے feature flags کو سرور سائیڈ evaluate کریں
- **ٹوکن گردش** - Personal Access Tokens کو وقتاً فوقتاً گردش دیں
- **کم از کم اجازتیں** - جب لکھنے کی رسائی کی ضرورت نہ ہو تو صرف پڑھنے کے ٹوکنز استعمال کریں
- **خفیہ کردہ ٹرانسپورٹ** - تمام API اور SDK مواصلات کے لیے TLS 1.2+

## متعلقہ وسائل

- [PostHog کنیکٹر](https://tajo.io/ur/docs/connectors/custom/posthog)
- [Segment کنیکٹر](https://tajo.io/ur/docs/connectors/custom/segment)
- [Customer Sync Skill](https://tajo.io/ur/docs/skills/data-sync/customer-sync)
- [Optimizely Feature Experimentation Documentation](https://docs.developers.optimizely.com/feature-experimentation/docs)
