---
title: "PostHog конектор"
description: "Пълно ръководство за интеграция с PostHog за синхронизация на продуктова аналитика, feature flags и данни за поведение на потребителите с Brevo през Tajo."
url: https://tajo.io/bg/docs/connectors/custom/posthog/
markdown: https://tajo.io/bg/docs/connectors/custom/posthog.md
lang: bg-BG
robots: noindex
---

Заявете ранен достъп

Въведете собственото си име и служебен имейл адрес. Ще ви изпратим връзка за потвърждение на заявката за достъп до Tajo.

# PostHog конектор

Статус на конектора: Планиран Все още не е изграден. Tajo не изпълнява този конектор днес.

| Поле източник | Целево поле | Примерна стойност |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Свържи PostHog с Brevo през Tajo, за да синхронизираш данни от продуктова аналитика, събития за поведение на потребителите и членства в кохорти за маркетингови кампании, задвижвани от данни, и персонализирано ангажиране на клиентите.

## Преглед

| Свойство | Стойност |
| --- | --- |
| **Платформа** | PostHog |
| **Категория** | Продуктова аналитика (персонализирана) |
| **Сложност на настройка** | Средна |
| **Официална интеграция** | Не |
| **Синхронизирани данни** | Събития, лица, feature flags, кохорти |
| **Метод на автентикация** | Personal API Key / Project Token |

## Функции

- **Синхронизация на събития** – Препращай аналитични събития от PostHog към Brevo за поведенческо таргетиране
- **Синхронизация на профили на лица** – Синхронизирай свойства на лица от PostHog към атрибути на контактите в Brevo
- **Сегментация на базата на кохорти** – Мапвай кохорти от PostHog към списъци с контакти в Brevo
- **Синхронизация на feature flags** – Сегментирай контактите по активирани feature flags
- **Данни за фунии** – Използвай данни от конверсионни фунии за таргетирано re-engagement
- **Метаданни от session replay** – Обогати контактите с метрики за ангажираност в сесията

## Предварителни условия

Преди да започнеш, увери се, че имаш:

1. Акаунт в PostHog (Cloud или self-hosted)
2. Personal API Key от [PostHog Settings](https://app.posthog.com/settings/user-api-keys)
3. Твоя Project API Key (token) от [Project Settings](https://app.posthog.com/project/settings)
4. Акаунт в Brevo с API достъп
5. Акаунт в Tajo с разрешения за конектори

## Автентикация

### Personal API Key (частни крайни точки)

```bash
# Generate at https://app.posthog.com/settings/user-api-keys
export POSTHOG_PERSONAL_API_KEY=phx_your_personal_api_key
export POSTHOG_PROJECT_TOKEN=phc_your_project_token
export POSTHOG_HOST=https://us.posthog.com  # or https://eu.posthog.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
```

```javascript
// Private API endpoints use Bearer authentication
const headers = {
  'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
  'Content-Type': 'application/json'
};

// Public endpoints use the project token
const publicHeaders = {
  'Content-Type': 'application/json'
};
// Token is passed in the request body for public endpoints
```

Сигурност на API ключа

Personal API keys предоставят пълен достъп до акаунта. Никога не ги излагай в client-side код. Използвай Project API Key (token) за публични крайни точки като event capture и оценка на feature flags.

## Конфигурация

### Основна настройка

```yaml
connectors:
  posthog:
    enabled: true
    host: "${POSTHOG_HOST}"
    personal_api_key: "${POSTHOG_PERSONAL_API_KEY}"
    project_token: "${POSTHOG_PROJECT_TOKEN}"
    project_id: "12345"

    sync:
      persons: true
      events: true
      cohorts: true
      feature_flags: true
      schedule: "0 */3 * * *"  # Every 3 hours

    event_filters:
      - "$pageview"
      - "purchase_completed"
      - "signup_completed"
      - "feature_used"

    lists:
      all_users: 25
      active_users: 26
      power_users: 27
```

### Мапване на полета

```yaml
field_mapping:
  email: email
  $name: FIRSTNAME
  $browser: BROWSER
  $os: OS
  $initial_referrer: REFERRAL_SOURCE
  total_events: EVENT_COUNT
  last_seen: LAST_ACTIVE_DATE
  signup_date: SIGNUP_DATE
  plan: SUBSCRIPTION_PLAN
  company: COMPANY
  cohort_names: POSTHOG_COHORTS
```

## API крайни точки

| Крайна точка | Метод | Описание |
| --- | --- | --- |
| `{host}/api/projects/{id}/persons/` | GET | Списък с лица |
| `{host}/api/projects/{id}/events/` | GET | Списък със събития |
| `{host}/api/projects/{id}/cohorts/` | GET | Списък с кохорти |
| `{host}/api/projects/{id}/feature_flags/` | GET | Списък с feature flags |
| `{host}/api/projects/{id}/feature_flags/evaluation/` | POST | Оценка на flags |
| `{host}/api/projects/{id}/insights/` | GET | Списък с запазени insights |
| `{host}/api/projects/{id}/query/` | POST | Изпълнение на HogQL заявки |
| `{host}/i/v0/e` | POST | Capture на събития (публичен) |
| `{host}/decide/?v=3` | POST | Решения за feature flag (публичен) |

## Примери с код

### Инициализация на конектора

```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('posthog', {
  host: process.env.POSTHOG_HOST,
  personalApiKey: process.env.POSTHOG_PERSONAL_API_KEY,
  projectToken: process.env.POSTHOG_PROJECT_TOKEN,
  projectId: '12345'
});
```

### Синхронизация на лица към Brevo

```javascript
// Paginate through PostHog persons
let nextUrl = `${posthogHost}/api/projects/${projectId}/persons/?` +
  new URLSearchParams({ limit: '100' });

while (nextUrl) {
  const response = await fetch(nextUrl, {
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
    }
  });

  const data = await response.json();

  for (const person of data.results) {
    const email = person.properties.$email || person.properties.email;
    if (!email) continue;

    await tajo.contacts.sync({
      email,
      attributes: {
        FIRSTNAME: person.properties.$name || person.properties.name,
        LAST_ACTIVE_DATE: person.properties.$last_seen,
        SIGNUP_DATE: person.created_at,
        EVENT_COUNT: person.properties.$event_count,
        BROWSER: person.properties.$browser,
        OS: person.properties.$os,
        REFERRAL_SOURCE: person.properties.$initial_referrer
      },
      listIds: [25]
    });
  }

  nextUrl = data.next;
}
```

### Синхронизация на кохорти като списъци в Brevo

```javascript
// Get PostHog cohorts and sync members to Brevo lists
const cohortsResponse = await fetch(
  `${posthogHost}/api/projects/${projectId}/cohorts/`,
  {
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
    }
  }
);

const { results: cohorts } = await cohortsResponse.json();

for (const cohort of cohorts) {
  // Get persons in this cohort
  const personsResponse = await fetch(
    `${posthogHost}/api/projects/${projectId}/cohorts/${cohort.id}/persons/`,
    {
      headers: {
        'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
      }
    }
  );

  const { results: persons } = await personsResponse.json();

  for (const person of persons) {
    const email = person.properties.$email || person.properties.email;
    if (email) {
      await tajo.contacts.update(email, {
        attributes: {
          POSTHOG_COHORTS: cohort.name
        }
      });
    }
  }
}
```

### Изпълнение на HogQL заявки за аналитика

```javascript
// Use HogQL to query analytics data
const queryResponse = await fetch(
  `${posthogHost}/api/projects/${projectId}/query/`,
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: {
        kind: 'HogQLQuery',
        query: `
          SELECT
            properties.$email AS email,
            count() AS event_count,
            max(timestamp) AS last_event
          FROM events
          WHERE event = 'purchase_completed'
            AND timestamp > now() - interval 30 day
          GROUP BY email
          HAVING event_count > 3
          ORDER BY event_count DESC
          LIMIT 1000
        `
      }
    })
  }
);

const queryResult = await queryResponse.json();

for (const row of queryResult.results) {
  await tajo.contacts.update(row[0], {
    attributes: {
      PURCHASE_COUNT_30D: row[1],
      LAST_PURCHASE: row[2]
    }
  });
}
```

## Ограничения на заявките

| Категория крайна точка | Лимит | Бележки |
| --- | --- | --- |
| Аналитични крайни точки | 240/мин, 1 200/ч | GET persons, events, insights |
| Query крайна точка | 2 400/ч | HogQL и персонализирани заявки |
| Оценка на feature flag | 600/мин | Крайна точка за локална оценка |
| CRUD крайни точки | 480/мин, 4 800/ч | Операции за създаване, обновяване, изтриване |
| Публични крайни точки (capture) | Без ограничение | Event capture, flag решения |

Пакетни експорти

За широкомащабни експорти на данни за събития използвай функцията batch exports на PostHog вместо API. Batch exports поддържа S3, BigQuery, Snowflake и други дестинации.

## Отстраняване на проблеми

| Проблем | Причина | Решение |
| --- | --- | --- |
| 401 Unauthorized | Невалиден API ключ | Провери Personal API Key в настройките |
| 400 Invalid project | Грешен project ID | Провери project ID в URL-а на PostHog |
| Празен списък с лица | Няма идентифицирани потребители | Увери се, че `posthog.identify()` се извиква |
| Липсват свойства | Свойствата не са зададени | Провери извикванията на `$set` в client SDK |
| Rate limit 429 | Твърде много заявки | Внедри backoff, провери хедърите за rate limit |

### Режим за дебъг

```yaml
connectors:
  posthog:
    debug: true
    log_level: verbose
    log_queries: true
    log_sync: true
```

## Добри практики

1. **Идентифицирай потребителите** – Винаги извиквай `posthog.identify()` с имейл, за да активираш синхронизацията на лица
2. **Използвай кохорти за сегментация** – Използвай поведенческите кохорти на PostHog за списъци в Brevo
3. **Пакетирай API заявките** – Използвай пагинация и пакетна обработка за големи набори от данни
4. **Използвай HogQL за сложни заявки** – Извличай персонализирана аналитика със SQL-подобни заявки
5. **Настрой batch exports** – За големи обеми данни предпочитай batch exports пред API polling
6. **Филтрирай релевантни събития** – Синхронизирай само маркетингово релевантни събития, за да намалиш шума

## Сигурност

- **Personal API Key** – Scoped Bearer token автентикация
- **Project token** – Публичен token само за client-side операции
- **Само HTTPS** – Всички крайни точки изискват TLS криптиране
- **IP allowlisting** – Достъпно за self-hosted инстанции
- **Scoping на ключове** – Създавай API ключове със специфични обхвати на разрешения
- **GitHub secret scanning** – PostHog си партнира с GitHub за откриване на изтекли ключове

## Свързани ресурси

- [Optimizely конектор](https://tajo.io/bg/docs/connectors/custom/optimizely)
- [Segment конектор](https://tajo.io/bg/docs/connectors/custom/segment)
- [Snowflake конектор](https://tajo.io/bg/docs/connectors/custom/snowflake)
- [PostHog API документация](https://posthog.com/docs/api)
