PostHog конектор

Свържи 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
  3. Твоя Project API Key (token) от Project Settings
  4. Акаунт в Brevo с API достъп
  5. Акаунт в Tajo с разрешения за конектори

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

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

Terminal window
# 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
// 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.

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

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

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

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

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/ePOSTCapture на събития (публичен)
{host}/decide/?v=3POSTРешения за feature flag (публичен)

Примери с код

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

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

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

// 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 заявки за аналитика

// 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 flag600/минКрайна точка за локална оценка
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

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

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 за откриване на изтекли ключове

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

Subscribe to updates

developer-docs

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

auto-detect
AI асистент

Здравейте! Попитайте ме за документацията.