PostHog konektor

Poveži PostHog sa Brevo putem Tajo za sinhronizaciju podataka analitike proizvoda, događaja ponašanja korisnika i članstava u kohortama za kampanje zasnovane na podacima i personalizovano angažovanje kupaca.

Pregled

SvojstvoVrednost
PlatformaPostHog
KategorijaAnalitika proizvoda (Prilagođeno)
Složenost podešavanjaSrednje
Zvanična integracijaNe
Sinhronizovani podaciDogađaji, Osobe, Feature Flags, Kohorte
Metod autentifikacijePersonal API Key / Project Token

Karakteristike

  • Sinhronizacija događaja - Prosleđivanje PostHog analitičkih događaja u Brevo za bihevioralno ciljanje
  • Sinhronizacija profila osoba - Sinhronizacija PostHog svojstava osoba na Brevo atribute kontakta
  • Segmentacija zasnovana na kohortama - Mapiranje PostHog kohorti na Brevo liste kontakata
  • Sinhronizacija feature flag-ova - Segmentacija kontakata prema omogućenim feature flag-ovima
  • Podaci levka - Korišćenje podataka o konverzijskom levku za ciljano ponovnog angažovanje
  • Metapodaci reprodukcije sesije - Obogaćivanje kontakata metrikama angažovanja sesije

Preduslovi

Pre nego što započneš, proveri da imaš:

  1. PostHog nalog (Cloud ili self-hosted)
  2. Personal API Key iz PostHog Settings
  3. Project API Key (token) iz Project Settings
  4. Brevo nalog sa API pristupom
  5. Tajo nalog sa dozvolama konektora

Autentifikacija

Personal API Key (privatni endpointi)

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

Bezbednost API ključa

Personal API ključevi pružaju pun pristup nalogu. Nikada ih ne izlažu u klijentskom kodu. Koristi Project API Key (token) za javne endpointe kao što su hvatanje događaja i evaluacija feature flag-ova.

Konfiguracija

Osnovno podešavanje

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

Mapiranje polja

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 endpointi

EndpointMetodaOpis
{host}/api/projects/{id}/persons/GETListanje osoba
{host}/api/projects/{id}/events/GETListanje događaja
{host}/api/projects/{id}/cohorts/GETListanje kohorti
{host}/api/projects/{id}/feature_flags/GETListanje feature flag-ova
{host}/api/projects/{id}/feature_flags/evaluation/POSTEvaluacija flag-ova
{host}/api/projects/{id}/insights/GETListanje sačuvanih uvida
{host}/api/projects/{id}/query/POSTPokretanje HogQL upita
{host}/i/v0/ePOSTHvatanje događaja (javno)
{host}/decide/?v=3POSTOdluke o feature flag-ovima (javno)

Primeri koda

Inicijalizacija konektora

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

Sinhronizacija osoba sa 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;
}

Sinhronizacija kohorti kao Brevo lista

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

Pokretanje HogQL upita za analitiku

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

Ograničenja brzine

Kategorija endpointaLimitNapomene
Analitički endpointi240/min, 1.200/satGET osobe, događaji, uvidi
Query endpoint2.400/satHogQL i prilagođeni upiti
Evaluacija feature flag-ova600/minLokalni endpoint evaluacije
CRUD endpointi480/min, 4.800/satOperacije kreiranja, ažuriranja, brisanja
Javni endpointi (hvatanje)NeograničenoHvatanje događaja, odluke o flag-ovima

Batch izvozi

Za izvoz podataka o događajima u velikim razmerama, koristi PostHog funkciju batch izvoza umesto API-ja. Batch izvozi podržavaju S3, BigQuery, Snowflake i druge destinacije.

Rešavanje problema

ProblemUzrokRešenje
401 UnauthorizedNevažeći API ključProveri Personal API Key u podešavanjima
400 Invalid projectPogrešan ID projektaProveri ID projekta u PostHog URL-u
Prazna lista osobaNema identifikovanih korisnikaProveri da se posthog.identify() poziva
Nedostaju svojstvaSvojstva nisu postavljenaVerifikuj $set pozive u klijentskom SDK-u
Limit 429Previše zahtevaImplementiraj usporavanje, proveri headere ograničenja

Debug režim

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

Najbolje prakse

  1. Identifikuj korisnike - Uvek pozovi posthog.identify() sa emailom da omogućiš sinhronizaciju osoba
  2. Koristi kohorte za segmentaciju - Koristi PostHog bihevioralne kohorte za Brevo liste
  3. Grupišu API zahteve - Koristi paginaciju i grupnu obradu za velike skupove podataka
  4. Koristi HogQL za složene upite - Izvuci prilagođenu analitiku sa SQL-like upitima
  5. Postavi batch izvoz - Za velike obime podataka, preferiraj batch izvoz umesto API ispitivanja
  6. Filtriraj relevantne događaje - Sinhronizuj samo marketinški relevantne događaje da smanjiš šum

Bezbednost

  • Personal API Key - Skopovana Bearer token autentifikacija
  • Project token - Javni token samo za operacije na strani klijenta
  • Samo HTTPS - Svi endpointi zahtevaju TLS enkripciju
  • IP allowlisting - Dostupno za self-hosted instance
  • Skopovanje ključa - Kreiraj API ključeve sa specifičnim skopovima dozvola
  • GitHub skeniranje tajni - PostHog sarađuje sa GitHub-om za detekciju procurelih ključeva

Povezani resursi

Subscribe to updates

developer-docs

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

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

Здраво! Питајте ме о документацији.